MrC*_*les 9 django django-staticfiles
我正在运行django 1.4.1应用程序.
我不知道,只包括django.contrib.staticfiles到INSTALLED_APPS您的设置足以让静态文件服务,而settings.DEBUG为真,即,您不必手动添加任何东西到您的网址文件.
我也注意到这绕过了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)
Run Code Online (Sandbox Code Playgroud)
我的urls.py:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^$', 'testapp.views.index', name='home'),
)
Run Code Online (Sandbox Code Playgroud)
我的settings.py指定了一个目录来查找静态文件,它还添加了以下内容:
MIDDLEWARE_CLASSES = (
'testapp.middleware.TestMiddleware',
...
)
Run Code Online (Sandbox Code Playgroud)
使用此中间件:
from __future__ import print_function
class TestMiddleware(object):
def process_request(self, request):
print("[REQUEST]", request.path)
Run Code Online (Sandbox Code Playgroud)
当我提出请求时,会打印出来:
[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
Run Code Online (Sandbox Code Playgroud)
它与测试服务器的启动方式有关吗?
MrC*_*les 12
发布后我才想到这个...
如果您正在使用django-admin.py runserver或者python manage.py runserver,那么它会添加一个常规中间件无法触及的静态文件处理程序.
您可以通过运行来禁用它django-admin.py runserver --nostatic- 请参阅django文档
当你这样做时--nostatic,它将回退到你的应用程序中的网址,例如,如果你直接包含staticfiles_urls():
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)
然后你的中间件将运行那些网址(当然还有你的其他网址).
| 归档时间: |
|
| 查看次数: |
1887 次 |
| 最近记录: |