Chcę tylko wrzucić favicon.ico
plikstaticfiles
katalogu, a następnie wyświetlić go w mojej aplikacji.
Jak mogę to osiągnąć?
Umieściłem favicon.ico
plik w moim staticfiles
katalogu, ale nie pojawia się i widzę to w moim dzienniku:
127.0.0.1 - - [21/Feb/2014 10:10:53] "GET /favicon.ico HTTP/1.1" 404 -
Jeśli pójdę do http://localhost:8000/static/favicon.ico
, zobaczę favicon.
GET /favicon.ico
nieGET /static/favicon.ico
wyszukujehttp://localhost:8000/static/favicon.ico
nie jest powiązany. Wygląda na to, że niektóre przeglądarki/favicon.ico
żądają od HTMLa.Odpowiedzi:
Jeśli masz szablon bazowy lub nagłówkowy, który jest zawarty wszędzie, dlaczego nie dołączyć tam ikony ulubionych z podstawowym kodem HTML?
źródło
{{STATIC_URL}}favicon.ico
href="{% static 'favicon.ico' %}
tak.image/png
) i format pliku (favicon.ico
) nie są zgodne.Jedną z lekkich sztuczek jest utworzenie przekierowania w
urls.py
pliku, np. Dodanie takiego widoku:Działa to dobrze jako prosta sztuczka, dzięki której favicony działają, gdy tak naprawdę nie masz innej statycznej zawartości do hostowania.
źródło
W pliku szablonu
Następnie w
<head>
taguZakłada się, że masz odpowiednio skonfigurowane pliki statyczne w settings.py.
Uwaga : starsze wersje Django użytku
load staticfiles
, nieload static
.źródło
Uniwersalne rozwiązanie
Możesz wyświetlić ikonę favicon w Django w taki sam sposób, jak w każdym innym frameworku: po prostu użyj czystego HTML.
Dodaj następujący kod do nagłówka szablonu HTML.
Lepiej do podstawowego szablonu HTML, jeśli ikona ulubionych jest taka sama w całej aplikacji.
Poprzedni kod zakłada:
Przydatne informacje na temat obsługi formatów plików i korzystania z ikon ulubionych można znaleźć w tym artykule w Wikipedii https://en.wikipedia.org/wiki/Favicon .
Mogę polecić użycie
.png
dla uniwersalnej kompatybilności przeglądarki.EDYCJA:
Jak napisano w jednym komentarzu:
„Nie zapomnij dodać
{% load staticfiles %}
na początku pliku szablonu!”źródło
W
settings.py
dodaniu głównego katalogu plików statycznych:Stwórz
/static/images/favicon.ico
Dodaj ikonę ulubionych do swojego szablonu (base.html):
I utwórz przekierowanie adresu URL,
urls.py
ponieważ przeglądarki szukają favicon w/favicon.ico
źródło
Po prostu dodaj to w pliku bazowym ur, jak pierwsza odpowiedź, ale rozszerzenie ico i dodaj do folderu statycznego
źródło
jeśli masz wtedy pozwolenie
dodaj alias do swojego wirtualnego hosta. (w pliku konfiguracyjnym Apache) podobnie dla pliku robots.txt
źródło
Najlepszym rozwiązaniem jest zastąpienie szablonu Django base.html. Utwórz kolejny szablon base.html w katalogu administratora. Utwórz najpierw katalog administratora, jeśli nie istnieje.
app/admin/base.html.
Dodaj
{% block extrahead %}
do nadpisującego szablonu.źródło
Uruchom także: python manage.py collectstatic
źródło
Wypróbowałem następujące ustawienia w django 2.1.1
base.html
settings.py
Struktura katalogów projektu
zobacz na żywo tutaj
źródło
Po prostu skopiuj favicon na: / yourappname / mainapp (ex: core) / static / mainapp (ex: core) / img
Następnie przejdź do szablonu mainapp (np. Base.html) i po prostu skopiuj to, po {% load static%}, ponieważ musisz najpierw załadować statystyki.
źródło
Najlepsze praktyki :
W przeciwieństwie do tego, co myślisz, ikona ulubionych może mieć dowolny rozmiar i dowolny typ obrazu. Kliknij ten link, aby uzyskać szczegółowe informacje.
Brak linku do favikony może spowolnić ładowanie strony.
Załóżmy, że w projekcie django ścieżka do Twojego favicon to:
w swoich szablonach django (najlepiej w szablonie podstawowym) dodaj tę linię do nagłówka strony:
Uwaga :
Przypuszczamy, że ustawienia statyczne są dobrze skonfigurowane w settings.py.
źródło