Реклама

Получение переменных в шаблоне из файла settings.py в Django

TutorialDjangosettings.py, SITE_URL, simple_tag1051

В файле 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' %}"

 

@EVILEG 27 сентября 2016 г. 0:06

Реклама

Реклама

Комментарии

Комментарии

Только авторизованные пользователи могут оставлять комментарии.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь

Реклама

Реклама