2012-06-23 12 views
10

Jak mogę obsłużyć favicon.ico w fazie rozwoju? Mogę dodać trasę w moim urlconf, ale nie chcę, aby ta trasa została przeniesiona do środowiska produkcyjnego. Czy jest jakiś sposób to zrobić w local_settings.py?Django favicon.ico w rozwoju?

Odpowiedz

3

Z docs:

from django.conf.urls.static import static 

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

Tam nie wydaje się być sposób służyć jednemu plik statyczny, ale przynajmniej ta funkcja pomocnicza jest opakowaniem, które działa tylko wtedy, gdy DEBUG = True.

-1

Możesz także utworzyć własny plik loader.py, który ładuje ustawienia, które chcesz przesłonić. ładuje ten plik powinien wyglądać tak:

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

i dodaje się na końcu settings.py. Ustawienia te nie powinny być uwzględniane na serwerze produkcyjnym, powinny być wyświetlane tylko na komputerach programistycznych. Jeśli używasz git, dodaj program loader.py do pliku .gitignore.

15

Najprostszym sposobem byłoby po prostu umieścić go w katalogu statycznej z innymi mediami statycznych, a następnie określić jego położenie w HTML:

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

Mój stary odpowiedź brzmiała:

można ustawić do wpisu w swoim numerze urls.py i po prostu sprawdź, czy debug jest prawdziwe. To uniemożliwiłoby jej obsługę w produkcji. Myślę, że możesz po prostu zrobić to samo, co media statyczne.

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

też może po prostu służyć favicon z widoku .:

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

miałem zaznaczone to jako poprawne, ale przy bliższym faktycznie nie działa. django.views.static.serve będzie wyświetlać tylko katalogi, a nie pojedyncze pliki. – knite

1

Ten pracował dla mnie:

from django.conf.urls.static import static 

... 

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