Django静态文件没有加载

Django静态文件没有加载,第1张

概述我正在尝试在为Django制作的 HTML模板文件中添加.css和.js文件.我已经关注了 official doc,所以我的配置设置为: urls.py urlpatterns = patterns('', (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'docum 我正在尝试在为Django制作的 HTML模板文件中添加.CSS和.Js文件.我已经关注了 official doc,所以我的配置设置为:

urls.py

urlpatterns = patterns('',(r'^site_media/(?P<path>.*)$','django.vIEws.static.serve',{'document_root': settings.STATIC_DOC_ROOT}),

settings.py

STATIC_DOC_ROOT = ''/myfirstapp/templates/seminar_form/'

但是我仍然无法做到正确,那些.CSS .Js和图片文件仍然没有加载到我的HTML中,但这些文件可以通过点击浏览器上的URL来访问(完全可见)
像这样:

http://127.0.0.1:8000/site_media/images/calendar.png

模板代码

<img src="{{ site_media }}images/calendar.png">
解决方法 如果你可以通过直接在浏览器中点击URL来查看文件,那么我猜你的 MEDIA_URL设置有误,或者模板代码有问题.您的CSS / Js / Images的HTML引用是什么URL?

确保您正在通过MEDIA_URL,因此它可以在模板的上下文中使用,您可以通过将请求传递给RequestContext中的视图函数来完成,如下所示:

def some_vIEw(request):    # ...    return render_to_response('my_template.HTML',my_data_dictionary,context_instance=RequestContext(request))

如果您的MEDIA_URL设置正确,并且您正确地为您的媒体提供服务(您的问题建议您是这样),您应该可以使用以下内容访问媒体:

<img src="{{ MEDIA_URL }}relative/path/to/media.jpg" alt="Foobar" />

编辑后显示模板代码:

从您的模板代码中,您似乎试图引用以名为site_media的模板变量为根的文件,这可能不存在.

你需要在settings.py中添加这样的东西:

MEDIA_URL = u'/site_media/'

然后将模板代码更改为以下内容:

<img src="{{ MEDIA_URL }}images/calendar.png">

并确保您从视图功能将MEDIA_URL传递给您的模板.

在评论后要求澄清RequestContext:

在线Django书有一些有用的(虽然目前缺少某些部分)documentation关于RequestContext.就个人而言,我使用django-annoying的render_to装饰器来避免不得不考虑它.代替我之前的示例视图代码,您可以这样做:

from annoying import render_to@render_to('my_template.HTML')def some_vIEw(request):    ...    return my_data_dictionary

基本上,你只是装饰你的视图函数,传入你想要渲染的模板,然后只返回一个包含你想要设置的额外上下文变量的dict(即上下文变量以及RequestContext为你设置的那些变量,例如MEDIA_URL ).

如果您的视图可能根据某些条件使用不同的模板,这种方法显然不起作用,但有简单的方法:

def some_vIEw(request,some_var):  ...  if some_var:    return render_to_response('my_template.HTML',context_instance=RequestContext(request))  else:    return render_to_response('my_other_template.HTML',context_instance=RequestContext(request))

可以改写为:

def some_vIEw(request,some_var):  ...  if some_var:    return _some_private_vIEw(request,my_data_dictionary)  else:    return _some_other_private_vIEw(request,my_data_dictionary)@render_to('my_template.HTML')def _some_private_vIEw(request,my_data_dictionary):  return my_data_dictionary@render_to('my_other_template.HTML')def _some_private_vIEw(request,my_data_dictionary):  return my_data_dictionary

至少对我来说这似乎更清晰.

总结

以上是内存溢出为你收集整理的Django静态文件没有加载全部内容,希望文章能够帮你解决Django静态文件没有加载所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存