Evgenii Legotckoi
Evgenii Legotckoi26 вересня 2016 р. 14:06

Django - Підручник 010. Отримання змінних у файлі шаблону в Django з settings.py

У файлі 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 .

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 01:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 06:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 03:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах