尝试在Django中直接加载静态网址时收到404错误 [英] Receiving 404 error when trying to load static urls directly in Django
问题描述
当我访问我的静态文件的URL(http://127.0.0.1:8000/site_media/static/css/site_base.css)时,我收到一条404错误消息。
When I visit the url of my static files (http://127.0.0.1:8000/site_media/static/css/site_base.css) I receive a 404 error message.
404从日志
[27/Oct/2012 14:14:54] "GET /site_media/static/js/libs/modernizr-2.5.2.min.js HTTP/1.1" 404 1716
[27/Oct/2012 14:34:20] "GET /site_media/static/css/site_base.css HTTP/1.1" 404 1677
目录结构
mysite
|-- manage.py
|-- mysite
|-- settings
|-- base.py
|-- dev.py
|-- prod.py
|-- site_media
|-- static
|-- css
|-- site_base.css
site_base.html
<link rel="stylesheet" href="{{ STATIC_URL }}css/site_base.css" />
设置
TEMPLATE_CONTEXT_PROCESSORS = [
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.static",
]
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.DefaultStorageFinder',
]
STATIC_URL = "/site_media/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
更新:
urls.py
from django.conf import settings
from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r"^$", direct_to_template, {'template' : 'home.html' }, name="home"),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^grappelli/', include('grappelli.urls')),
url(r'^profile/', include('profiles.urls')),
)
urlpatterns += staticfiles_urlpatterns()
推荐答案
简短回答
Django在不在STATIC_URL上投放STATIC_ROOT ,除非您告诉我太太。
Django does not serve STATIC_ROOT on STATIC_URL, unless you tell it too.
长回答
这应该是常见问题,以下是关于使用django的文章。 contrib.staticfiles权利(disclamer:由我写的,反馈赞赏)。这就像文档,但尝试更短,更务实。
This should be a FAQ, here's an article about using django.contrib.staticfiles right (disclamer: written by me, feedback appreciated). It's like the documentation but tries to be shorter and more pragmatic.
这篇关于尝试在Django中直接加载静态网址时收到404错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!