django css文件无法识别 - 配置错误?

时间:2010-07-06 12:19:23

标签: css django url templates settings

在我的应用程序中,我想使用一个css文件,但是tempalte并不“知道”文件的位置,尽管我已经在教程中对其进行了配置:

urls.py中的

(网站根目录中的urls文件,不属于某个应用)

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.STATIC_DOC_ROOT}),
模板中的

<link href="/site_media/default.css" rel="stylesheet" type="text/css" />

在设置中:

STATIC_DOC_ROOT = '/site_media'

哪里可以错? 感谢

2 个答案:

答案 0 :(得分:3)

检查django-annoying,它是一个非常有用的应用程序,有很多方便的装饰器,中间件和功能。如果您添加StaticServe这样的中间件,Django将在DEBUG = True处提供静态,而无需在urls.py中明确设置。

MIDDLEWARE_CLASSES = (
    'annoying.middlewares.StaticServe',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',              
    'django.middleware.doc.XViewMiddleware',               
    'django.contrib.auth.middleware.AuthenticationMiddleware',                    
)

其次,检查您的MEDIA_URL(在您的情况下是STATIC_DOC_ROOT,但您应该使用MEDIA_URL)和MEDIA_ROOT路径。 MEDIA_ROOT应指向静态目录的绝对路径。这是我在setttings.py中的方式:

import os


def rel(*x):
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)

# MEDIA_ROOT will point to media directory where settings.py is located
MEDIA_ROOT = rel('media')
MEDIA_URL = '/media/'

您可以使用相同的功能设置templates目录的路径。

答案 1 :(得分:2)

document_root的{​​{1}}参数需要是服务器文件系统上文件的位置,而不是URL。因此,除非您的css文件确实位于磁盘上的static.serve目录中,这似乎不太可能,否则您需要其他内容/site_media