Django uygulamamda görünmesi için bir favori simgesi nasıl alabilirim?


148

Sadece damla istiyorum favicon.icobenim de staticfilesdizin ve sonra benim uygulamada gösterilmesi gerekir.

Bunu nasıl başarabilirim?

favicon.icoDosyayı dizinime yerleştirdim staticfiles, ancak görünmüyor ve bunu günlüğümde görüyorum:

127.0.0.1 - - [21/Feb/2014 10:10:53] "GET /favicon.ico HTTP/1.1" 404 -

Eğer gidersem http://localhost:8000/static/favicon.ico, favicon'u görebilirim.


5
Hata olduğu GET /favicon.icodeğil GET /static/favicon.icobakarak http://localhost:8000/static/favicon.icoilgili değildir. Görünüşe göre bazı tarayıcılar /favicon.icoHTML'nin despitesini istiyor .
donduruldu

Yanıtlar:


169

Her yerde bulunan bir taban veya başlık şablonunuz varsa neden favicon'u temel HTML ile birlikte eklemiyorsunuz?

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

Kulağa iyi bir fikir gibi geliyor. Beni bunun nasıl yapılacağını açıklayan bir bağlantıya yönlendirebilir misiniz?
jononomo

3
Evet. Gibi bir şey:{{STATIC_URL}}favicon.ico
karthikr

16
Bu sadece bir örnek. Gereksinimlerinize uyacak şekilde değiştirin.
hanleyhansen

3
Bu cevap benim için işe yaramadı ama kullanılan diğer cevaplar işe href="{% static 'favicon.ico' %}yaradı.
Bezewy

4
MIME türü ( image/png) ve dosya biçimi ( favicon.ico) eşleşmiyor.
x-yuri

122

Hafif bir hile, urls.pydosyanızda bir yönlendirme yapmaktır , örneğin şöyle bir görünüm ekleyin:

from django.views.generic.base import RedirectView

favicon_view = RedirectView.as_view(url='/static/favicon.ico', permanent=True)

urlpatterns = [
    ...
    re_path(r'^favicon\.ico$', favicon_view),
    ...
]

Bu, gerçekten barındıracak başka statik içeriğiniz olmadığında favicons'ları çalıştırmak için kolay bir hile olarak iyi çalışır.


3
Şablona iki satır eklemeye kıyasla bunun nasıl hafif olduğunu görmüyorum. Ve bu, üretimde kullanmayacağım bir hile.
x-yuri

16
@ x-yuri Temel bir şablonunuz varsa diğer yanıt daha kolaydır . Mesele şu ki, herhangi bir şablon veya statik içeriğiniz olmayabilir, bu nedenle STATIC_URL yapılandırılmamış bile olabilir. örneğin, bir json API'sıdır. ancak yine de günlüklerinizde 404 hataları görmeden göz atılabilir bir API (krom vb. otomatik olarak favicon.ico istemeye çalışır) isteyecektir. Üretimde böyle bir RedirectView kullanmanın herhangi bir zararı yoktur.
wim

56

Şablon dosyasında

{% load static %}

Sonra <head>etiketin içinde

<link rel="shortcut icon" href="{%  static 'favicon.ico' %}">

Bu, settings.py'de uygun şekilde yapılandırılmış statik dosyalarınız olduğunu varsayar.


Not : Django'nun eski sürümleri kullanılır load staticfiles, kullanılmaz load static.


31

Evrensel çözüm

Favicon'u Django'da başka bir çerçevede yaptığınız gibi gösterebilirsiniz: sadece saf HTML kullanın.

Aşağıdaki kodu HTML şablonunuzun başlığına ekleyin.
Daha iyisi, favicon uygulamanızda aynıysa temel HTML şablonunuza.

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

Önceki kod varsayar:

  1. Statik klasörünüzde 'favicon' adlı bir klasörünüz var
  2. Favicon dosyasının adı 'favicon.png'
  3. STATIC_URL ayar değişkenini doğru şekilde ayarladınız

Vikipedi https://en.wikipedia.org/wiki/Favicon'un bu makalesinde dosya formatı desteği ve favicons kullanımı hakkında yararlı bilgiler bulabilirsiniz . Evrensel tarayıcı uyumluluğu için kullanılmasını önerebilirim .
.png

DÜZENLEME:
Bir yorumda yayınlandığı gibi,
" {% load staticfiles %}Şablon dosyanızın üstüne eklemeyi unutmayın !"


Tipp: favicon.ico benim için yapmadı, .png uzantısı ile test ettikten sonra işe yaradı!
kaya

Haklısın @kaya. .İco biçimi uyumluluk açısından en iyisi değildir. Ancak .png her zaman çalışır.
ePi272314

15

Senin içinde settings.pyeklenti bir kök dizin Statik Dosyalar:

   STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
        ]

Oluşturmak /static/images/favicon.ico

Sık kullanılan simgesini şablonunuza ekleyin (base.html):

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

Ve bir url yönlendirmesi oluşturun, urls.pyçünkü tarayıcılar bir favicon arar/favicon.ico

from django.contrib.staticfiles.storage import staticfiles_storage
from django.views.generic.base import RedirectView

urlpatterns = [
    ...
    path('favicon.ico', RedirectView.as_view(url=staticfiles_storage.url('images/favicon.ico')))
]

9
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}"/>

Bunu ilk cevap ama ico uzantısı gibi ur temel dosyasına ekleyin ve statik klasöre ekleyin


4

izniniz varsa o zaman

Alias /favicon.ico /var/www/aktel/workspace1/PyBot/PyBot/static/favicon.ico

sanal ana makinenize takma ad ekleyin. (apache config dosyasında) robots.txt için benzer şekilde

Alias /robots.txt /var/www/---your path ---/PyBot/robots.txt

3

En iyi çözüm, Django base.html şablonunu geçersiz kılmaktır. Yönetici dizini altında başka bir base.html şablonu oluşturun. Varsa, önce bir yönetici dizini oluşturun.app/admin/base.html.

{% block extrahead %}Geçersiz kılma şablonuna ekleyin .

{% extends 'admin/base.html' %}
{% load staticfiles %}
{% block javascripts %}
    {{ block.super }}
<script type="text/javascript" src="{% static 'app/js/action.js' %}"></script>

{% endblock %}

{% block extrahead %}
    <link rel="shortcut icon" href="{% static 'app/img/favicon.ico'  %}" />
{% endblock %}
{% block stylesheets %}

    {{ block.super }}
{% endblock %}

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

Ayrıca şunu çalıştırın: python manage.py collectstatic


2

Ben django 2.1.1 aşağıdaki ayarları denedim

base.html

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

settings.py

 STATIC_ROOT = os.path.join(BASE_DIR, 'static')
 STATIC_URL = '/static/'` <br>`.............

Proje dizini yapısı

görüntü

burada canlı izle


1

Sadece favicon'unuzu kopyalayın: / yourappname / mainapp (ex: core) / statik / mainapp (ex: core) / img

Daha sonra mainapp şablonunuza gidin (ör: base.html) ve {% load static%} tarihinden sonra bunu kopyalayın, çünkü önce statikleri yüklemelisiniz.

<link href="{% static 'core/img/favi_x.png' %}" rel="shortcut icon" type="image/png" />

0

En iyi uygulamalar:

Ne düşündüğünüzün aksine, favicon herhangi bir boyutta ve herhangi bir görüntü türünde olabilir. Ayrıntılar için bu bağlantıyı takip edin.

Favicon'unuza bir bağlantı yerleştirilmemesi sayfa yüklenmesini yavaşlatabilir.

Bir django projesinde, favicon'unuzun yolunun:

myapp/static/icons/favicon.png

django şablonlarınızda (tercihen temel şablonda) bu satırı sayfanın başına ekleyin:

<link rel="shortcut icon" href="{%  static 'icons/favicon.png' %}">

Not :

Statik ayarların settings.py'de iyi yapılandırıldığını düşünüyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.