与Django一起提供favicon.ico。为什么settings.MEDIA_URL与django.views.generic.simple.redirect_to仅适用于开发环境?

时间:2010-08-11 17:10:12

标签: django favicon django-staticfiles

我发现这个解决方案是用django服务favicon.ico。

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

我不明白为什么它只适用于开发服务器。 转到/favicon.ico适用于开发人员,不适用于debug=False。 它应该重定向到/media/images/favicon.ico(由apache提供),如果你直接访问它,它会工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:51)

我建议不要使用django服务于favicon,除非你绝对不得不这样做。相反,在Web服务器配置中添加一个设置,添加指向favicon的别名。

例如,在apache中:

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

答案 1 :(得分:29)

这不是您问题的直接答案,但您可以将此用于favicon:

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

答案 2 :(得分:16)

redirect_to一直是deprecated in 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'))
)