gpt4 book ai didi

django - django staticfiles 是否跳过中间件?

转载 作者:行者123 更新时间:2023-11-28 03:20:50 26 4
gpt4 key购买 nike

我正在运行一个 django 1.4.1 应用程序。

我没有意识到只要将 django.contrib.staticfiles 包含到 INSTALLED_APPS 中就足以在 settings.DEBUG< 时提供静态文件 为 True,即您不必手动向 urls 文件添加任何内容。

我还注意到这绕过了 django 中间件。有谁知道这是怎么发生的或为什么会发生?


我刚刚创建了一个空白的新项目,我的 views.py:

from django.http import HttpResponse
def index(request):
html = '<html><body>Logo: <img src="/static/logo.gif"></body></html>'
return HttpResponse(html)

我的 urls.py:

from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^$', 'testapp.views.index', name='home'),
)

我的settings.py中指定了查找静态文件的目录,还添加了这个:

MIDDLEWARE_CLASSES = (
'testapp.middleware.TestMiddleware',
...
)

使用这个中间件:

from __future__ import print_function
class TestMiddleware(object):
def process_request(self, request):
print("[REQUEST]", request.path)

当我发出请求时,它会被打印出来:

[REQUEST] /
[18/Jan/2013 15:30:27] "GET / HTTP/1.1" 200 60
[18/Jan/2013 15:30:27] "GET /static/logo.gif HTTP/1.1" 200 2190
[REQUEST] /favicon.ico

与测试服务器启动方式有关吗?

最佳答案

我是在发布后才想通的......

如果您正在使用 django-admin.py runserverpython manage.py runserver,那么它会添加一些额外的魔法来添加一个静态文件处理程序,而不是您的常规中间件不能碰。

您可以通过运行 django-admin.py runserver --nostatic 来禁用它——参见 django docs

当您执行 --nostatic 时,它将返回到您应用中的 url,例如如果您直接包含 staticfiles_urls() :

urlpatterns += staticfiles_urlpatterns()

然后您的中间件将为这些 URL 运行(当然还有您的所有其他 URL)。

关于django - django staticfiles 是否跳过中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com