Я запускаю приложение django 1.4.1.
Я не понимал, что достаточно просто включить django.contrib.staticfiles
в INSTALLED_APPS
в ваших настройках, чтобы статические файлы обслуживались, пока settings.DEBUG
имеет значение True, т. е. вам не нужно вручную добавлять что-либо в файл URL-адресов.
Я также заметил, что это обходит промежуточное программное обеспечение 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
Это как-то связано с запуском тестового сервера?