我在WinVista上使用Django 1.3.1和Python 2.7。无论是在本地开发者还是部署到我的主机上,我都遇到了同样的问题。
在我网站的主页上,静态媒体显示:
http://www.drugpolicyreformmovement.com
在辅助页面上,CSS,图像等不显示:
http://www.drugpolicyreformmovement.com/newsarchive2003
http://www.drugpolicyreformmovement.com/newsarchive2010
或
http://www.drugpolicyreformmovement.com/newsarchive2009
'manage runserver'的输出在这些辅助'newsarchive'页面上显示静态媒体的404错误。不知何故,'document_root'在辅助页面上与主页面不同,因此它在那些辅助页面上查找'/ newsclippings2003 / static'而不是仅仅按照'/ static'查找所有内容,就像它应该的那样为首页。
我不知道我的URLconf与你有什么关系,所以我在这里包含了整个文件:
import os
from django.conf.urls.defaults import *
from django.views.generic import ListView, YearArchiveView
from newsclippings.models import Article
from drugpolicyreformmovement.views import ArticleYearArchiveView
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^$', ListView.as_view(
queryset = Article.objects.order_by("-date", "publication", "author", "headline"),
context_object_name='articles',
template_name='index.html')),
(r'^newsarchive(?P<year>\d+)/$', ArticleYearArchiveView.as_view()),
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{ 'document_root' : os.path.join( os.path.dirname(__file__), 'static') }),
# url(r'^drugpolicyreformmovement/', include('drugpolicyreformmovement.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
)
同样,我认为这是有问题的一行:
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{ 'document_root' : os.path.join( os.path.dirname(__file__), 'static') }),
我放置URLconf条目的顺序无关紧要。这条线的设计使我在部署时不必进行更改。
答案 0 :(得分:2)
第一页的网址是
http://www.drugpolicyreformmovement.com/static/css/blueprint/print.css
在内页
http://www.drugpolicyreformmovement.com/newsarchive2003/static/css/blueprint/print.css
只需在网址中添加/
或使用{{ STATIC_URL }}
例如
/static/css/blueprint/print.css
或
<img src="{{ STATIC_URL }}css/blueprint/print.css" />
只需在设置中设置STATIC_ROOT
即可见这里:
答案 1 :(得分:1)
当我查看源代码时,我会看到静态资产的相对路径。您需要使用绝对路径!
这是错的:
<link rel="stylesheet" href="static/css/blueprint/screen.css" media="screen, projection">
使用此功能:
<link rel="stylesheet" href="/static/css/blueprint/screen.css" media="screen, projection">
很可能是您的模板不正确,但您没有显示模板文件。
答案 2 :(得分:1)
您应该在模板中使用{{STATIC_URL}}模板标记,而不是试图让它以这种方式提供网址。在部署时,您仍然不必进行更改,这样您就可以移动内容而不用担心有另一个上下文变量来处理。