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