2010-07-06 77 views
0

在我的应用程序中,我想使用一个css文件,但tempalte不知道文件的位置,虽然我已将它配置为在教程中:django css文件无法识别 - 配置错误?

in the urls.py(the 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' 

我可以在哪里出错? 谢谢

回答

3

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

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目录。

+0

我用过这个方法,非常感谢!它没有必要安装烦人的中间件,现在它很好,没有:D 再次感谢! – dana 2010-07-06 15:20:59

+0

肯定没有必要,但我真的很喜欢django讨厌的应用程序,并认为你可能会觉得它有用:) – 2010-07-06 15:23:35

+0

我会审查它的情况下麻烦;)谢谢!:) – dana 2010-07-06 15:42:39

2

document_root参数static.serve需要位于服务器文件系统上的文件,而不是URL。所以除非你的css文件真的在你的磁盘上的/site_media目录中,这看起来不太可能,你还需要其他的东西,如STATIC_DOC_ROOT

+0

虽然我读过它3次,我真的不明白你的意思。 我应该将STATIC_DOC_ROOT路径更改为我的磁盘上的绝对路径或? – dana 2010-07-06 15:03:29

+1

是的,这正是我的意思。 – 2010-07-06 15:07:49

+0

我现在试一试,并发布结果:)非常感谢!:) – dana 2010-07-06 15:09:45

相关问题