Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Убрать повторяющийся код проверки авторизации. [RSS Feed]

#1 Июнь 30, 2011 07:01:16

Kotakota
От:
Зарегистрирован: 2011-06-06
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Убрать повторяющийся код проверки авторизации.

Для проекта есть одна главная шаблонная страница *.html
В зависимости от состояния пользователя (авторизирован/неавторизирован) должны выводиться соответствующие элементы в шаблоне.
Такие проверок на авторизацию в этом шаблоне достаточно много:

{% if user.is_authenticated %}
Привет {{ user.username }}<br />
<a href="{% url acct_logout %}">Выход</a>
{% else %}
{% include "login_template.html" %}
{% endif %}
Или еще:

 {% if user.is_authenticated %}
Загрузите свое изображение:<br />
{% include "upload_picture_template.html" %}
<br />
{% else %}
Авторизируйтесь, что бы иметь возможность добавлять рисунки.
{% endif %}
Как можно убрать повторяющийся код, чтобы следовать DRY?
Решил использовать включающие теги:
from django import template
register = template.Library()
@register.inclusion_tag('mini_template.html', takes_context=True)
def my_tag(context,what):
return {'whats': what}
Но не совсем понимаю, что включить в него?
Есть идея что то типа этого:
{% load some_tags %}
# Вызываем включающий тег в тех местах где это нужно и передаем ему параметры
{% my_tag 'some_template_file.html' %}
Включающий тег будет проверять авторизирован пользователь или нет и если пользователь авторизирован, то будет инклюдить шаблон переданный в параметре (инклюд будет в файле mini_template.html, с помощью {% include {{ whats }} %}.



Офлайн

#2 Июнь 30, 2011 14:13:59

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Убрать повторяющийся код проверки авторизации.

Множественное использование if user.is_authenticated не нарушает DRY-принцып. В крайнем случае, можно просто использовать два разых шблона, для разных пользователей, и отнаследовать их от общего.

Офлайн

  • Начало
  • » Django
  • » Убрать повторяющийся код проверки авторизации.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version