django 앱에 파비콘을 표시하려면 어떻게해야합니까?


148

favicon.icostaticfiles디렉토리 에을 놓은 다음 내 앱에 표시하고 싶습니다.

어떻게하면됩니까?

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있지 않은 오류는 관련이 없습니다. HTML 에도 불구하고 일부 브라우저 요청처럼 보입니다 . GET /static/favicon.icohttp://localhost:8000/static/favicon.ico/favicon.ico
동결 됨

답변:


168

어디에나 포함 된 기본 또는 헤더 템플릿이 있다면 기본 HTML과 함께 즐겨 찾기 아이콘을 포함시키지 않겠습니까?

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

좋은 생각 인 것 같습니다. 이 작업을 수행하는 방법을 설명하는 링크를 알려 주시겠습니까?
jononomo

3
네. : 같은 뭔가{{STATIC_URL}}favicon.ico
karthikr

16
그것은 단지 예일뿐입니다. 필요에 맞게 수정하십시오.
hanleyhansen 2012

3
이 답변은 저에게 효과가 없었지만 사용 된 다른 답변은 효과 href="{% static 'favicon.ico' %}가 없었습니다.
Bezewy

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 오류가 표시되지 않고 탐색 가능한 API를 원합니다 (크롬 등은 favicon.ico를 자동으로 요청하려고 시도합니다). 프로덕션에서 이러한 RedirectView를 사용하면 아무런 해가 없습니다.
wim

56

템플릿 파일에서

{% load static %}

그런 다음 <head>태그 내

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

settings.py에 정적 파일이 적절하게 구성되어 있다고 가정합니다.


참고 : 이전 버전의 Django는 사용 load staticfiles하지 않습니다 load static.


31

범용 솔루션

Django에서 다른 프레임 워크에서와 같은 방식으로 즐겨 찾기 아이콘을 표시 할 수 있습니다. 순수한 HTML 만 사용하십시오.

HTML 템플릿의 헤더에 다음 코드를 추가하십시오.
favicon이 응용 프로그램에서 동일하면 기본 HTML 템플릿에 더 좋습니다.

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

이전 코드는 다음을 가정합니다.

  1. 정적 폴더에 'favicon'이라는 폴더가 있습니다.
  2. 파비콘 파일의 이름은 'favicon.png'입니다.
  3. 설정 변수 STATIC_URL을 올바르게 설정했습니다

Wikipedia https://ko.wikipedia.org/wiki/Favicon 기사에서 파일 형식 지원 및 즐겨 찾기 아이콘 사용 방법에 대한 유용한 정보를 찾을 수 있습니다 . 범용 브라우저 호환성을 위해 사용 하는 것이 좋습니다 .
.png

편집 :
한 의견에 게시 된
" {% load staticfiles %}템플릿 파일 맨 위에 추가하는 것을 잊지 마십시오 !"


팁 : favicon.ico는 나를 위해 그것을하지 않았습니다. .png 확장자로 테스트 한 후에 작동했습니다!
kaya

당신은 바로 @kaya입니다. .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' %}"/>

urls.py브라우저 에서 즐겨 찾기 아이콘을 찾기 때문에 URL 리디렉션을 만듭니다./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' %}"/>

첫 번째 답변과 같은 기본 파일에 ico 확장자를 추가하고 정적 폴더에 추가하십시오.


4

당신이 권한이 있다면

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

가상 호스트에 별칭을 추가하십시오. 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' %}" />

python manage.py collectstatic도 실행하십시오.


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

/ yourappname / mainapp (ex : core) / static / mainapp (ex : core) / img에 즐겨 찾기 아이콘을 복사하십시오.

그런 다음 mainapp 템플릿 (ex : base.html)으로 이동하여 {% load static %} 후에 정적 을 먼저로드해야하므로 이를 복사하십시오 .

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

0

모범 사례 :

당신이 생각할 수있는 것과는 달리, 파비콘은 임의의 크기 및 임의의 이미지 유형일 수있다. 자세한 내용은이 링크를 참조하십시오.

파비콘에 링크를 넣지 않으면 페이지로드 속도가 느려질 수 있습니다.

django 프로젝트에서 favicon의 경로가 다음과 같다고 가정하십시오.

myapp/static/icons/favicon.png

django 템플릿 (바람직하게는 기본 템플릿) 에서이 줄을 페이지 헤드에 추가하십시오.

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

노트 :

정적 설정은 settings.py에서 잘 구성되어 있다고 가정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.