Обслуживание favicon.ico с Джанго. Почему settings.MEDIA_URL с django.views.generic.simple.redirect_to работает только в среде разработчиков?

Я нашел это решение для обслуживания favicon.ico с Django.

(r'^favicon\.ico$',
  'django.views.generic.simple.redirect_to',
  {'url': settings.MEDIA_URL+'images/favicon.ico'}),

Я не понимаю, почему это работает только для сервера разработки. Переход к /favicon.ico работает на dev, а не с debug=False, Он должен перенаправить на /media/images/favicon.ico (обслуживается apache), который работает, если вы обращаетесь к нему напрямую.

Есть идеи?

3 ответа

Решение

Я бы рекомендовал не подавать фавикон с django, если только вам это не нужно. Вместо этого добавьте параметр в конфигурацию вашего веб-сервера, который добавляет псевдоним, указывающий на значок.

Например, в Apache:

Alias /favicon.ico /path/to/media_url/images/favicon.ico

Это не прямой ответ на ваш вопрос, но вы можете использовать это для favicon:

<link rel="shortcut icon" href="{{ STATIC_URL }}img/favicon.ico" />

redirect_to устарела в Django 1.5. Вы можете использовать класс на основе RedirectView

from django.conf import settings
from django.views.generic import RedirectView

urlpatterns = patterns('',
    (r'^favicon\.ico$', RedirectView.as_view(url=settings.MEDIA_URL + 'images/favicon.ico'))
)
Другие вопросы по тегам