Альтернатива {% if request.user.is_active %} в шаблонах Django
Каковы логические альтернативы о:
{% if request.user.is_active %}
Если представление не возвращается render_to_response
со словарем с request
шаблон не работает должным образом.
Итак, любые идеи приветствуются.
// отредактирован
Моя мотивация такова: когда вы работаете с представлениями из установленных приложений, у вас нет возможности их изменить.
2 ответа
Добавлять django.contrib.auth.context_processors.auth
в TEMPLATE_CONTEXT_PROCESSORS
в вашем settings.py
,
Теперь у вас есть user
переменная во всех ваших шаблонах. Таким образом, вы можете использовать это:
{% if user.is_active %}
Подробнее смотрите в документации: шаблонные контекстные процессоры в настройках, автоматический контекстный процессор.
view.py:
def foo_view(request):
...
is_active = request.user.is_active
return render_to_response('template.html', {'is_active':is_active})
или context_processor:
def is_user_active(request):
return {'is_active': request.user.is_active}
или промежуточное ПО:
class IsUserActive:
def process_template_response(self, request, response):
response.context['is_active'] = request.user.is_active
template.html:
{% if is_active %}
...
{% endif %}
Но, искренне, я не знаю, почему render_to_response не удовлетворяет вас:
...
return render_to_response('template.html',
context_instance=RequestContext(request))