Django site_media相对url问题

时间:2010-05-27 16:26:10

标签: css django django-urls

在我的settings.py中我有以下内容:

PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
MEDIA_ROOT = os.path.join(PROJECT_DIR,'templates')
MEDIA_URL = '/templates/'

在urls.py中我有(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),

我的base.html有以下指令:

<link media="screen" href="site_media/bat/design/css/bat.css" type="text/css" rel="stylesheet" />

首次进入应用程序(即http://localhost)后,这个样式表就可以正常加载了。但是,在随后的http请求中(在urls.py中为(r'^assist/bat/', include('assist.bat.urls')),对于另一个模板,此指令会导致以下错误:

  

未加载样式表http://localhost/assist/bat/site_media/bat/design/css/bat.css,因为其MIME类型“text / html”不是“text / css”。

正如你所看到的,这个css指令变成了一个完全不正确的相对url。如果我从该网址中删除 / assist / bat ,那么它的工作正常。那么如何才能将我的应用设置为不以这种方式变形url?

谢谢, 伊戈尔

1 个答案:

答案 0 :(得分:3)

狂野猜测:href="site_media/bat/design/css/bat.css"应该是href="/site_media/bat/design/css/bat.css",在它们前面没有斜线开始的网址会相对于当前网址解析。