In der Datei settings.py in Django speichern wir alle notwendigen Konfigurationsinformationen für unsere Anwendung, einschließlich der Site-URL oder Pfade zu bestimmte Verzeichnisse, die spezielle Dateien und viele andere Informationen speichern.
Und manchmal ist es erforderlich, diese Variablen in Vorlagen, derselben Site-URL, zu verwenden. Aber wenn Sie diese Konstante einfach über {{SITE \ _URL}} in die Vorlage schreiben, können Sie diese Variable nicht verwenden. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Vorlagen-Tags zu registrieren, die bestimmte Funktionen ausführen, z. B. ein Attribut aus einer Einstellungsdatei anhand seines Namens übernehmen.
Registrieren eines Vorlagen-Tags
Da wir über die Verwendung von SITE \ _URL in einer Vorlage sprechen, stimmen wir zu, dass wir diese Variable in der Datei settings.py registriert haben.
SITE_URL = 'www.mysite.com'
Und dann gehen wir zur Anwendung, in der wir das Tag zum Abrufen der Attribute aus der Datei settings.py registrieren. In meinem Fall ist diese Anwendung home. In dieser Anwendung müssen Sie ein Verzeichnis templatetags erstellen und zwei Dateien darin ablegen: \ _ \ _ init \ _ \ _. Py * * und zum Beispiel home \ _extras.py **.
Wir erhalten folgende Bewerbungsstruktur:
home/ migrations/ templates/ templatetags/ __init__.py home_extras.py __init__.py admin.py apps.py models.py sitemap.py tests.py urls.py views.py
Sehen wir uns nun den Inhalt der Datei home \ _extras.py an.
from django import template from django.conf import settings register = template.Library() # Регистрируем тег, с помощью которого будем получать атрибуты из файла settings @register.simple_tag def get_attribute(name): return getattr(settings, name, "")
In einer Vorlage verwenden
Und die Verwendung in einer Vorlage wird noch einfacher. Es ist nur erforderlich, die Tag-Erweiterung in die Vorlage zu laden und dieses Tag zu verwenden, indem Sie ihm den Namen des Attributs übergeben, das wir erhalten möchten.
{% load home_extras %} {% get_attribute 'SITE_URL' %}"
Für Django empfehle ich Timeweb VDS-Server .