回答:
どこにでも含まれているベースまたはヘッダーテンプレートがある場合、ファビコンを基本的なHTMLに含めてみませんか?
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
{{STATIC_URL}}favicon.ico
href="{% static 'favicon.ico' %}
はうまくいきました。
image/png
)とファイル形式(favicon.ico
)が一致しません。
軽量トリックの1つは、 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),
...
]
これは、ホストする静的コンテンツが本当にない場合にファビコンを機能させる簡単な方法としてうまく機能します。
テンプレートファイル
{% load static %}
次に<head>
タグ内
<link rel="shortcut icon" href="{% static 'favicon.ico' %}">
これは、settings.pyで静的ファイルが適切に構成されていることを前提としています。
注:Djangoの古いバージョンでは使用load staticfiles
せず、使用しますload static
。
他のフレームワークで行うのと同じ方法でDjangoにファビコンを表示できます。純粋なHTMLを使用するだけです。
次のコードをHTMLテンプレートのヘッダーに追加します。
ファビコンがアプリケーション全体で同じである場合は、ベースのHTMLテンプレートよりも適切です。
<link rel="shortcut icon" href="{% static 'favicon/favicon.png' %}"/>
前のコードは次のことを前提としています。
Wikipediaのこの記事https://en.wikipedia.org/wiki/Faviconで、ファイル形式のサポートとファビコンの使用方法に関する役立つ情報を見つけることができます。
使用をお勧めできます.png
普遍的なブラウザーの互換性のためにをます。
編集:
1つのコメントに投稿されているように、
「{% load staticfiles %}
テンプレートファイルの先頭に追加することを忘れないでください!」
settings.py
ルートのstaticfilesディレクトリを追加します。
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')))
]
許可があれば
Alias /favicon.ico /var/www/aktel/workspace1/PyBot/PyBot/static/favicon.ico
仮想ホストにエイリアスを追加します。(apache設定ファイル内)robots.txtについても同様
Alias /robots.txt /var/www/---your path ---/PyBot/robots.txt
最善の解決策は、Django base.htmlテンプレートをオーバーライドすることです。adminディレクトリの下に別のbase.htmlテンプレートを作成します。adminディレクトリが存在しない場合は、最初に作成します。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 %}
/ yourappname / mainapp(ex:core)/ static / mainapp(ex:core)/ imgにファビコンをコピーするだけです
次に、mainappテンプレート(ex:base.html)に移動し、{%load static%}の後にこれをコピーします。これは、最初にstaticsをロードする必要があるためです。
<link href="{% static 'core/img/favi_x.png' %}" rel="shortcut icon" type="image/png" />
ベストプラクティス :
あなたが思うかもしれないこととは逆に、ファビコンは任意のサイズと任意の画像タイプにすることができます。詳細については、このリンクをクリックしてください。
ファビコンへのリンクを配置しないと、ページの読み込みが遅くなる可能性があります。
djangoプロジェクトで、ファビコンへのパスが次のようであるとします。
myapp/static/icons/favicon.png
djangoテンプレート(ベーステンプレートが望ましい)で、次の行をページのヘッドに追加します。
<link rel="shortcut icon" href="{% static 'icons/favicon.png' %}">
注意 :
静的設定は、settings.pyで適切に構成されていると考えられます。
GET /favicon.ico
いないGET /static/favicon.ico
で見ているhttp://localhost:8000/static/favicon.ico
関係ありません。/favicon.ico
HTMLにもかかわらず、一部のブラウザがリクエストしているよう です。