2011-02-18 15 views
4

这应该是非常简单的,但不知何故,它让我坚持了整整一个早上。我在本地开发,使用Django的调试服务器,以及与此filestructure:Django本地开发时的静态文件 - 绝对如何服务?

/project/ (django project) 
/static/ (static files) 

在settings.py MEDIA_ROOT和MEDIA_URL都设置为“/静态/”,我在我的网址使用此的.py

url(r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': '../static'}), 

在我的模板,需要从静态目录服务器上的文件配置为这样:

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css"> 

这所有的作品,因为它应该 - 的JavaScript/CSS /图像所有从服务页面正确地服务。但是,当我转到子目录时,例如http://127.0.0.1:8000/news/,那么所有链接都会中断。

我试过使用各种os.import选项来让它做适当的相对链接,但没有任何运气。有没有一种方法可以强制它相对于基础url,或者可能将其硬编码到我的文件系统?

任何帮助将是惊人的!

+0

你在settings.py中设置了哪些媒体目录? – neolaser 2011-02-18 00:28:24

+0

我们可以看到你的* full * urls.py吗? – SingleNegationElimination 2011-02-18 02:09:03

回答

0

当你进入子目录时,你的链接如何中断?请你再解释一下。

django 1.3是否支持静态媒体的某种奇怪的相对路由?

如果它可以从主页提供但不是其他人,那听起来不像你的STATIC_URL是一个相对的位置?

什么是您的STATIC_URL?它应该是绝对的,并以斜线开始。

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

我刚刚遇到同样的问题,我通过从STATIC_URL ='/ static /'中删除了第一个斜杠,并使其STATIC_URL ='static /'与philipbe上面写的一样。 奇怪的是,'/ media /'同时适用于MEDIA_URL(而'media /'中断布局)。

无论如何 - 只要将STATIC_URL改为等于'static /'而不带前导斜杠,就可以解决它。

相关问题