Django静态文件没有加载
我正在尝试在为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的 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 至少对我来说这似乎更清晰. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |