Django favicon.ico正在开发中?

kni*_*ite 13 django favicon

我如何在开发中提供favicon.ico?我可以在我的urlconf中添加一个路由,但我不希望该路由转移到生产环境.有没有办法在local_settings.py中执行此操作?

dm0*_*514 15

最简单的方法是将它与其他静态媒体一起放在静态目录中,然后在html中指定它的位置:

    <link rel="shortcut icon" type="image/png" 
          href="{% static 'images/favicon.ico' %}"/>
Run Code Online (Sandbox Code Playgroud)

我的回答是:

您可以在自己中设置一个条目,urls.py然后检查是否debug为真.这将使其无法在生产中使用.我认为你可以像静态媒体那样做.

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^favicon.ico$', 'django.views.static.serve', {'document_root': '/path/to/favicon'}),
    )
Run Code Online (Sandbox Code Playgroud)

您也可以从您的视图中提供图标:

from django.http import HttpResponse

def my_image(request):
image_data = open("/home/moneyman/public_html/media/img/favicon.ico", "rb").read()
return HttpResponse(image_data, mimetype="image/png")
Run Code Online (Sandbox Code Playgroud)


Raf*_* So 6

这对我有用:

from django.conf.urls.static import static

...

if settings.DEBUG:
    urlpatterns += static(r'/favicon.ico', document_root='static/favicon.ico')
Run Code Online (Sandbox Code Playgroud)


kni*_*ite 5

来自文档:

from django.conf.urls.static import static

urlpatterns = patterns("",
    # Your stuff goes here
) + static('/', document_root='static/')
Run Code Online (Sandbox Code Playgroud)

似乎没有办法提供单个静态文件,但至少这个辅助函数是一个包装器,仅在DEBUG = True时才有效.