这应该是超级简单的,但不知怎的,它让我整个上午都被困住了。我正在本地开发,使用django调试服务器,并使用此文件结构:
/project/ (django project)
/static/ (static files)
在settings.py中,MEDIA_ROOT和MEDIA_URL都设置为'/ static /',我在我的urls.py中使用它
url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '../static'}),
在我的模板中,需要作为静态目录服务器的文件配置如下:
<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css">
这一切都可行 - javascript / css / images都是从hompage中正确提供的。但是,当我转到子目录,例如http://127.0.0.1:8000/news/时,所有链接都会被破坏。
我尝试使用各种os.import选项让它正确地做相对链接,但没有任何运气。有没有办法可以强制它相对于基本网址,或者可能将其硬编码到我的文件系统?
任何帮助都会很棒!
答案 0 :(得分:1)
在urls.py文件的这一行中,'../static'
应更改为绝对目录。尝试更改它,看看会发生什么。
您的档案:
url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '../static'}),
看起来应该更像:
url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/full/path/to/static'}),
举个例子,我的设置有点不同,但我仍然使用完整路径。
以下是我的设置方式:
在settings.py
STATIC_DOC_ROOT = '/Users/kylewpppd/Projects/Django/kl2011/assets/'
和urls.py
:
(r'^assets/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes':True}),
我正在从'localhost:8000/assets/'
提供静态文件。
答案 1 :(得分:1)
我遇到了同样的问题,我通过从STATIC_URL ='/ static /'中移除第一个斜杠并使其成为STATIC_URL ='static /'就像上面的philipbe一样解决了它。 奇怪的是'/ media /'同时适用于MEDIA_URL(当'media /'打破布局时)。
无论如何 - 只需将STATIC_URL更改为等于'static /'且没有前导斜杠,您就可以解决它。
答案 2 :(得分:0)
当您转到子目录时,您的链接如何中断?你能进一步解释一下吗?
django 1.3是否支持静态媒体的某种奇怪的相对URL路由?
如果可以从主页上提供,而不是其他人提供,那么这听起来与STATIC_URL
的相对位置完全不同吗?
你的STATIC_URL
是什么?它应该是绝对的,并以斜线开头。