Django favicon.ico в разработке?

Как я могу служить favicon.ico в разработке? Я мог бы добавить маршрут в свой urlconf, но я не хочу, чтобы этот маршрут переносился в производственную среду. Есть ли способ сделать это в файле local_settings.py?

Ответ 1

Из docs:

from django.conf.urls.static import static

urlpatterns = patterns("",
    # Your stuff goes here
) + static('/', document_root='static/')

Кажется, что нет способа обслуживать один статический файл, но по крайней мере эта вспомогательная функция является оболочкой, которая работает только тогда, когда DEBUG = True.

Ответ 2

Самый простой способ - просто поместить его в свой статический каталог с другим статическим носителем, а затем указать его местоположение в своем html:

    <link rel="shortcut icon" type="image/png" 
          href="{% static 'images/favicon.ico' %}"/>

Мой старый ответ был:

Вы можете настроить запись в urls.py и просто проверить, действительно ли debug. Это не позволяло бы ему служить в производстве. Я думаю, что вы можете просто походить на статические носители.

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

Вы также можете просто использовать значок с вашего вида.:

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")

Ответ 3

Это сработало для меня:

from django.conf.urls.static import static

...

if settings.DEBUG:
    urlpatterns += static(r'/favicon.ico', document_root='static/favicon.ico')

Ответ 4

Ну, вы можете создать свой собственный файл loader.py, который загружает настройки, которые вы хотите переопределить. Загрузка этого файла должна выглядеть так:

try:
    execfile(os.path.join(SETTINGS_DIR, 'loader.py'))
except:
    pass

и добавляться в конце settings.py. Эти настройки не должны заноситься в производственный сервер, только должны появляться на машинах разработки. Если вы используете git, добавьте loader.py в .gitignore.