在我的django应用中,我已经设置了这些设置
settings.py
------------
MEDIA_ROOT = '/home/me/dev/python/django/myproject/myapp/media/'
MEDIA_URL = '/site_media/'
urls.py
--------
...
url(r'^myapp/', include('myapp.urls')),
url(r'^site_media/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.MEDIA_ROOT}),
我在'/home/me/dev/python/django/myproject/myapp/media/css'
文件夹中创建了一个css文件,并将其包含在模板中,如下所示
base.html
--------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>my app</title>
<LINK REL=StyleSheet HREF="{{MEDIA_URL}}css/myappstyle.css" TYPE="text/css" MEDIA="screen, print"/>
home.html
---------
{% extends "mywebapp/base.html" %}>
{% block title %}{{block.super}}| Home {% endblock %}
{% block content %}
{{block.super}}
hi
{% endblock %}
然后我创建了一个视图,如下所示
def custom_render(request,context,template):
req_context=RequestContext(request,context)
return render_to_response(template,req_context)
def home(request,template_name,page_title):
print 'home'
return render_to_response(template_name,{'me':'myname'})
并设置其网址
myapp.urls
--------
urlpatterns=patterns('',
url(r'^$','myapp.views.home',
{
'template_name':'mywebapp/home.html',
'page_title':'Home'
},
name='home'),
当我提供网址时
http://127.0.0.1:8000/myapp/
网页被渲染,但css不是。控制台输出显示404错误
[14/Sep/2012 10:02:50] "GET /myapp/ HTTP/1.1" 200 547
[14/Sep/2012 10:02:50] "GET /myapp/css/myappstyle.css HTTP/1.1" 404 2514
但是,当我提供网址时,
http://127.0.0.1:8000/site_media/css/myappstyle.css
我可以毫无问题地看到css文件的内容。
为什么会这样?有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
在呈现RequestContext()
视图的响应时,您需要使用home
(正如您对custom_render
视图所做的那样)。
否则{{MEDIA_URL}}
将为空,这将导致404
错误。
答案 1 :(得分:1)
此外,您可以使用direct_to_template
代替render_to_response
。使用它,您不必使用RequestContext()
:
from django.views.generic.simple import direct_to_template
def some_view(request):
# ...
return direct_to_template(request, template_name, params_dict)
答案 2 :(得分:0)
这是静态文件,需要使用
<LINK REL=StyleSheet HREF="{{ STATIC_URL }}css/myappstyle.css" TYPE="text/css" MEDIA="screen, print"/>
然后检查DEBUG = True