मैं अपने django ऐप में दिखाने के लिए एक फ़ेविकॉन कैसे प्राप्त कर सकता हूं?


148

मैं बस favicon.icoअपनी staticfilesडायरेक्टरी में ड्रॉप करना चाहता हूं और फिर इसे अपने ऐप में दिखाता हूं।

मैं यह कैसे हासिल कर सकता हूं?

मैंने favicon.icoफ़ाइल को अपनी staticfilesनिर्देशिका में रखा है , लेकिन यह दिखाई नहीं देता है और मैं इसे अपने लॉग में देखता हूं:

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

यदि मैं जाता हूं http://localhost:8000/static/favicon.ico, तो मैं फ़ेविकॉन देख सकता हूं।


5
त्रुटि GET /favicon.icoनहीं GET /static/favicon.icoदिख रही http://localhost:8000/static/favicon.icoहै, संबंधित नहीं है। ऐसा लगता है कि कुछ ब्राउज़र /favicon.icoHTML को हटाने के लिए अनुरोध करते हैं ।
फ्रीज किया

जवाबों:


169

यदि आपके पास एक आधार या हेडर टेम्प्लेट है जो हर जगह शामिल है तो बेसिक HTML के साथ फ़ेविकॉन को शामिल क्यों नहीं किया जाता है?

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

एक अच्छे विचार की तरह लगता है। क्या आप मुझे एक लिंक की ओर इशारा कर सकते हैं जो बताता है कि यह कैसे करना है?
जोंनोमो

3
हाँ। कुछ इस तरह से:{{STATIC_URL}}favicon.ico
karthikr

16
वह सिर्फ एक उदाहरण है। अपनी आवश्यकताओं को पूरा करने के लिए इसे संशोधित करें।
हेलीहैनसेन

3
यह उत्तर मेरे काम नहीं आया लेकिन अन्य उत्तर जो उपयोग किए गए href="{% static 'favicon.ico' %}थे।
1

4
MIME प्रकार ( image/png) और फ़ाइल प्रारूप ( favicon.ico) मेल नहीं खाता है।
x-yuri

122

एक हल्का ट्रिक यह है कि आप अपनी urls.pyफ़ाइल में रीडायरेक्ट करें , उदाहरण के लिए एक दृश्य जोड़ें:

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),
    ...
]

यह अच्छी तरह से काम करता है जब आप वास्तव में होस्ट करने के लिए अन्य स्थिर सामग्री नहीं रखते हैं तो फेवीकोन्स प्राप्त करने के लिए एक आसान चाल है।


3
मैं यह नहीं देखता कि टेम्पलेट के लिए दो लाइनों को जोड़ने की तुलना में यह कितना हल्का है। और यह एक तरह की चाल है जिसका मैं उत्पादन में उपयोग नहीं करूंगा।
x-yuri

16
@ x-yuri अन्य उत्तर आसान है, यदि आपके पास आधार टेम्पलेट है । मुद्दा यह है कि आपके पास कोई टेम्पलेट या स्थिर सामग्री नहीं हो सकती है, इसलिए STATIC_URL को भी कॉन्फ़िगर नहीं किया जा सकता है। जैसे कि यह एक json API है। लेकिन फिर भी आपके लॉग में 404 त्रुटियों को देखे बिना एक ब्रॉज़ेबल एपीआई चाहिए (क्रोम आदि स्वचालित रूप से favicon.ico का अनुरोध करने की कोशिश करेंगे)। उत्पादन में इस तरह के RedirectView का उपयोग करने से कोई नुकसान नहीं है।
wim

56

टेम्पलेट फ़ाइल में

{% load static %}

फिर <head>टैग के भीतर

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

यह मानता है कि आपके पास स्थिर फ़ाइलें हैं जो सेटिंग्स में कॉन्फ़िगर की गई हैं।


नोट : Django के पुराने संस्करण उपयोग load staticfilesनहीं करते हैं load static


31

सार्वभौमिक समाधान

आप Django में फ़ेविकॉन दिखा सकते हैं, जिस तरह से आप किसी भी अन्य ढांचे में कर सकते हैं: बस शुद्ध HTML का उपयोग करें।

अपने HTML टेम्पलेट के हेडर में निम्न कोड जोड़ें।
यदि आपके एप्लिकेशन में फ़ेविकॉन समान है, तो आपके बेस HTML टेम्पलेट में बेहतर है।

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

पिछला कोड मानता है:

  1. आपके स्थिर फ़ोल्डर में 'favicon' नाम का एक फ़ोल्डर है
  2. फ़ेविकॉन फ़ाइल का नाम 'favicon.png' है
  3. आपने सेटिंग चर STATIC_URL को ठीक से सेट किया है

आप फ़ाइल प्रारूप समर्थन के बारे में उपयोगी जानकारी पा सकते हैं और विकिपीडिया https://en.wikipedia.org/wiki/Favicon के इस लेख में फ़ेविकॉन का उपयोग कैसे करें
मैं .pngसार्वभौमिक ब्राउज़र संगतता के लिए उपयोग की सिफारिश कर सकता हूं ।

संपादित करें:
जैसा कि एक टिप्पणी में पोस्ट किया गया है,
" {% load staticfiles %}अपनी टेम्पलेट फ़ाइल के शीर्ष में जोड़ना न भूलें !"


Tipp: favicon.ico ने इसे मेरे लिए नहीं किया, .png एक्सटेंशन के साथ परीक्षण करने के बाद यह काम किया!
काया

आप सही हैं @ काया .Ico प्रारूप संगतता के बारे में सबसे अच्छा नहीं है। हालाँकि .png हमेशा काम करते हैं।
ePi272314

15

अपने settings.pyमूल रूट डायरेक्टरी में जोड़ें:

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

सृजन करना /static/images/favicon.ico

अपने टेम्पलेट में फ़ेविकॉन जोड़ें (base.html):

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

और एक url पुनर्निर्देशित करें urls.pyक्योंकि ब्राउज़र में एक favicon की तलाश है/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' %}"/>

बस उस उर आधार फाइल में पहले उत्तर की तरह आइको एक्सटेंशन जोड़ें और इसे स्थिर फ़ोल्डर में जोड़ें


4

यदि आपके पास अनुमति है तो

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

अपने वर्चुअल होस्ट में उपनाम जोड़ें। (Apache config file में) robots.txt के लिए इसी तरह

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

3

सबसे अच्छा समाधान Django base.html टेम्पलेट को ओवरराइड करना है। व्यवस्थापक निर्देशिका के तहत एक और base.html टेम्पलेट बनाएं। यदि यह मौजूद नहीं है, तो पहले एक व्यवस्थापक निर्देशिका बनाएं।app/admin/base.html.

{% block extrahead %}ओवरराइडिंग टेम्पलेट में जोड़ें ।

{% 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' %}" />

इसे भी चलाएं: अजगर प्रबंधन ओरेकल को इकट्ठा करता है


2

मैंने django 2.1.1 में निम्नलिखित सेटिंग्स की कोशिश की

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>`.............

परियोजना निर्देशिका संरचना

छवि

यहाँ देखें


1

बस अपने favicon को कॉपी करें: / yourappname / mainapp (ex: core) / static / mainapp (ex: core) / img

फिर अपने मेनएप टेम्प्लेट (उदा: base.html) पर जाएं और {% लोड स्टैटिक%} के बाद इसे कॉपी करें, क्योंकि आपको स्टैटिक्स पहले लोड करना होगा।

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

0

सर्वोत्तम प्रथाएं :

आप जो सोच सकते हैं उसके विपरीत, फ़ेविकॉन किसी भी आकार और किसी भी छवि प्रकार का हो सकता है। विवरण के लिए इस लिंक का पालन करें।

अपने फ़ेविकॉन के लिए लिंक नहीं डालना पेज लोड को धीमा कर सकता है।

एक django परियोजना में, मान लीजिए कि आपके फ़ेविकॉन के लिए रास्ता है:

myapp/static/icons/favicon.png

अपने django टेम्प्लेट्स (अधिमानतः बेस टेम्प्लेट) में, इस लाइन को पेज के प्रमुख में जोड़ें:

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

ध्यान दें :

हम मानते हैं, स्थैतिक सेटिंग्स अच्छी तरह से सेटिंग में कॉन्फ़िगर की गई हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.