нельзя использовать current_user в макросе jinja2?
Я использую Flask-Login, который обеспечиваетcurrent_user
Объект в шаблонах. Я хочу написать макрос для отображения формы комментария или ссылки для входа в зависимости от того, вошел ли пользователь в систему. Если я использую этот код непосредственно в шаблоне, он работает:
{% if current_user.is_authenticated %}
{{ quick_form(form) }}
{% else %}
<a href="{{ url_for('auth.login') }}">Log In with Github</a>
{% endif %}
Я поместил тот же код в макрос и импортировал макрос в свой шаблон.
{% macro comment_form(form) %}
{% if current_user.is_authenticated %}
...
{% endif %}
{% endmacro %}
{% from "macros/comments.html" import comment_form %}
{% extends "base.html" %}
{% block content %}
{# ... content goes here ... #}
{{ comment_form(form) }}
{% endblock %}
Когда я пытаюсь загрузить эту страницу, я получаю сообщение об ошибке:
jinja2.exceptions.UndefinedError: 'current_user' is undefined
Конечно, легкий способ обойтиcurrent_user
в качестве параметра и использовать его (делая подписьcomment_form(user, form)
), хотя это довольно уродливое решение (имо).
Почему макрос не использует контекстный процессор? Разве это не содержит контекст?