У файлі settings.py у Django ми зберігаємо всю необхідну конфігураційну інформацію нашої програми, до складу якої може входити URL сайту або шляхи до певних директорій , в яких зберігаються спеціальні файли та багато іншого.
І іноді потрібно дані змінні використовувати в шаблонах, той же URL сайту. Але просто прописавши в шаблоні цю константу через {{ SITE_URL }} , скористатися цією змінною не вдасться. Одним із способів вирішення цього завдання є реєстрація шаблонних тегів, які виконуватимуть певний функціонал, наприклад, забирати атрибут з файлу налаштувань на його ім'я.
Реєстрація шаблонного тега
Якщо вже мова зайшла про використання SITE_URL у шаблоні, то домовимося, що у файлі settings.py ми прописали цю змінну.
SITE_URL = 'www.mysite.com'
А далі йдемо в ту програму, в якій зареєструємо тег для отримання атрибутів з файлу settings.py. У моєму випадку ця програма home. У даному додатку необхідно буде створити каталог templatetags і розмістити в ньому два файли: init .py і наприклад home\ _extras.py .
Отримаємо наступну структуру програми:
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
А тепер подивимося вміст файлу home_extras.py.
from django import template from django.conf import settings register = template.Library() # Регистрируем тег, с помощью которого будем получать атрибуты из файла settings @register.simple_tag def get_attribute(name): return getattr(settings, name, "")
Використання у шаблоні
А використання у шаблоні буде ще простіше. Потрібно буде лише підвантажити у шаблоні розширення тегів та скористатися даним тегом, передавши йому ім'я атрибута, який хочемо отримати.
{% load home_extras %} {% get_attribute 'SITE_URL' %}"
Для Django рекомендую VDS-сервера хостера Timeweb .