Часто нужно в шаблоне вывести какой-то конфигурационный параметр. Нет, не тот который в settings.py, а тот который хранится в базе. Ну например префикс заголовка страниц, содержимое мета-тега в head или ещё какую-то информацию. Эти все данные(пары имя-значение) можно либо хранить в простой модели или взять что-то стороннее посерьезней, например dbsettings.
Для примера я возьму простую модель:
class Entry( models.Model ):
name = models.CharField( max_length = 50, unique = True )
value = models.CharField( max_length = 150 )
Здесь и далее буду писать упрощенный код
Всё, данные есть где хранить, но их ещё и нужно удобно вывести в шаблон. Первое что приходит в голову для решения - сделать шаблонный тег. Да, и вправду просто и сердито:
@register.simple_tag
def get_conf( name ):
return Entry.objects.get( name = name )
И использовать легко, примерно так:
<meta name="keywords" content="{% get_conf "meta_keywords" %}"/>
Но у этого способа по сути одно маленькое положительное качество - в этот тег можно передать переменную, а не жестко закодированную строку("hardcoded" - правильно перевел?:)) с названием. Но ...
