【问题标题】:Django Template Styles and CSS disappear with middlewareDjango 模板样式和 CSS 随中间件消失
【发布时间】:2012-10-27 17:39:19
【问题描述】:

我有自定义中间件,当我将它添加到我的 settings.py 中的 MIDDLEWARE_CLASSES 元组时,网站上的所有 css 和图像都会消失,只留下文本。

middleware.py

from django.shortcuts import redirect
from django.core import urlresolvers

class AcceptTOSMiddleware(object):
    def process_request(self, request):
        login_url = urlresolvers.reverse('login')
        tos_url = urlresolvers.reverse('tos')
        if request.path not in [login_url, tos_url]:
            profile = request.user.get_profile()
            if not profile.tos:
                return redirect(tos_url)
        return None

settings.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
    'pagination.middleware.PaginationMiddleware',
    'utils.middleware.AcceptTOSMiddleware'
)

有人知道为什么会这样吗?

【问题讨论】:

    标签: django django-models django-forms django-templates django-views


    【解决方案1】:
    1. 这应该只发生在开发中,否则 HTTPD 将提供静态文件,而 django 方面将没有任何东西可以阻止它,

    2. 读取runserver的控制台输出,它应该显示对静态文件的请求以3xx重定向(可能是301)响应,

    3. 对于开发,如果request.path 不以settings.STATIC_URLsettings.MEDIA_URL 开头,则您的中间件应同时检查,在这种情况下return None

    【讨论】:

      【解决方案2】:

      听起来您正在通过 Django 提供静态文件;也许您正在使用开发服务器?

      正如所写,您的中间件将重定向到任何与登录无关的路径,包括图像和 CSS。您还可以排除 STATIC_URL 和 MEDIA_URL 下的所有内容。

      【讨论】:

        猜你喜欢
        • 2020-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 2016-03-03
        • 2017-04-24
        • 2012-01-10
        相关资源
        最近更新 更多