使用django-allauth时,Django无法找到静态文件

4
当我使用allauth时,一切似乎都很正常,除了Django现在无法找到静态文件。没有allauth时,所有静态文件都能被渲染。allauth的设置需要添加...
TEMPLATE_CONTEXT_PROCESSORS = (

    "allauth.context_processors.allauth",
    "allauth.account.context_processors.account"
)

我之前的设置文件中没有TEMPLATE_CONTEXT_PROCESSORS。我是不是漏掉了什么?我应该如何解决这个问题。当我查看DEBUG控制台时,我可以看到它正在尝试获取css文件。

"GET /accounts/login/css/contact.css"

虽然应该是做这样的事情

"GET /static/css/contact.css"

告诉我调用“contact.css”的文件(链接)在哪里。 - Goin
1个回答

7

TEMPLATE_CONTEXT_PROCESSORS 有一个默认值,您正在覆盖它。因此现在默认值已经丢失了。其中之一是 "django.core.context_processors.static",这就是为什么 Django 找不到您的静态文件的原因。

请参见https://docs.djangoproject.com/en/1.3/ref/settings/#template-context-processors获取默认列表。您需要的是以下内容:

 TEMPLATE_CONTEXT_PROCESSORS = (
     "django.contrib.auth.context_processors.auth",
     "django.core.context_processors.debug",
     "django.core.context_processors.i18n",
     "django.core.context_processors.media",
     "django.core.context_processors.static",
     "django.contrib.messages.context_processors.messages",
     "allauth.context_processors.allauth",
     "allauth.account.context_processors.account",
     )

感谢您的帮助...实际上直到现在我都没有使用TEMPLATE_CONTEXT_PROCESSORS,但事情一直很顺利...我还没有理解TEMPLATE_CONTEXT_PROCESSORS的重要性,因为即使没有它,一切也能正常工作,您能否请解释一下原因? - Sachin
我不知道 "allauth",所以也不知道它的上下文处理器是做什么的。我会假设它将一些“账户”放入您的模板上下文中。如果您自己不使用它,您不会错过上下文处理器的缺失。您可能需要检查 allauth 的自有模板是否都能正常工作。 - Reinout van Rees
有没有一种方法可以从Django模块中获取settings.py中的默认值? - Petr Peller
1
@PetrPeller:我猜你的意思是 from django.conf import global-settings?那是完整的默认设置列表。 - Reinout van Rees
已弃用(截至2017年):http://django-allauth.readthedocs.io/en/latest/installation.html --> # 按以下方式指定上下文处理器: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ # 在此处定义与Django相关的上下文 # allauth需要从django获取以下内容 'django.template.context_processors.request', ], }, },] - ThePhi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接