我刚刚下载了最新的 Django 版本(1.4.1),在本地使用 runserver 进行开发时,我不知道如何提供 css 文件。我已经阅读了有关静态文件的相关 Django 文档以及这里的许多问题和答案......听起来它应该或多或少是自动的,但它对我不起作用。
我正在开发本教程中的民意调查应用程序。
来自日志的 404
[27/Apr/2012 01:04:09] "GET /polls/ HTTP/1.1" 200 210
[27/Apr/2012 01:04:09] "GET /polls/css/styles.css HTTP/1.1" 404 2596
目录结构
mysite
|-- manage.py
|-- mysite
|-- __init__.py
|-- settings.py
|-- urls.py
|-- wsgi.py
|-- polls
|-- __init__.py
|-- models.py
|-- tests.py
|-- views.py
|-- static
|-- css
|-- styles.css
|-- templates
|-- polls
|-- index.html
索引.html
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/styles.css">
设置.py
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
'django.core.context_processors.static',
)
^^^ 当我启动项目时我在 settings.py 中没有 TEMPLATE_CONTEXT_PROCESSORS 变量并且必须手动添加它 - 我应该担心吗?
STATICFILES_DIRS 是空的,因为 css 文件位于 polls 应用程序中名为 static 的目录中,这是 Django 自动查找它的地方 - 对吧?
我的 INSTALLED_APPS 中也有 django.contrib.staticfiles。
网址.py
我在文档中看到,该解决方案适用于 runserver 以外的本地开发服务器-听起来好像没有必要,对吧?(我目前已将其注释掉。)
编辑:我取消注释这些行,但没有看到变化 - 在 css 文件上仍然得到相同的 404
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
我的目录结构设置错误吗?我是否缺少 settings.py 中的必要设置?任何帮助将不胜感激!谢谢!
编辑:
我接受了 Mark 的建议并阅读了 RequestContext。改变我的观点:
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})
到
from django.template import RequestContext
...
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list}, context_instance=RequestContext(request))
得到 /static/ url 注册:
[27/Apr/2012 13:56:55] "GET /static/css/styles.css HTTP/1.1" 200 19
这解决了问题。