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

Cla*_*ash 24 django favicon django-staticfiles

我找到了这个用django服务favicon.ico的解决方案.

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

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

有任何想法吗?

Jor*_*ter 51

除非你绝对必须,否则我建议不要使用django服务于favicon.而是在Web服务器配置中添加一个设置,添加指向favicon的别名.

例如,在apache中:

Alias /favicon.ico /path/to/media_url/images/favicon.ico
Run Code Online (Sandbox Code Playgroud)


Ser*_*tin 29

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

<link rel="shortcut icon" href="{{ STATIC_URL }}img/favicon.ico" />
Run Code Online (Sandbox Code Playgroud)

  • 这适用于网站,但有时浏览器和工具会尝试直接访问/favicon.ico. (2认同)

小智 16

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'))
)
Run Code Online (Sandbox Code Playgroud)