В файле 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 .