Django проверяет, является ли пользователь, вошедший в систему, тем, кто создал запись - PullRequest
0 голосов
/ 07 июня 2018

У меня есть модель Django, которая записывает пользователя, который создал запись.Я хочу отображать кнопку в шаблоне только в том случае, если вошедший в систему пользователь совпадает с пользователем в записи.

Я хочу сделать что-то похожее на:

{% if user.is_authenticated and (request.user.is_superuser or request.user == task.user) %}

где задачаэто запись.

Как я могу это сделать?

1 Ответ

0 голосов
/ 07 июня 2018

Нельзя использовать скобки в теге шаблона {% if %}.Вы можете использовать следующую проверку, которая эквивалентна:

{% if user.is_authenticated and request.user.is_superuser or user.is_authenticated and request.user == task.user %}

Затем вы можете отбросить первую проверку user.is_authenticated, потому что только аутентифицированный пользователь будет суперпользователем.

{% if user.is_authenticated and request.user.is_superuser or user.is_authenticated and request.user == task.user %}

Выможет также быть в состоянии отбросить вторую user.is_authenticated проверку, если у всех задач есть пользователь (поскольку анонимный пользователь никогда не равен реальному пользователю).

{% if request.user.is_superuser or request.user == task.user %}

Django не рекомендует помещать сложную логику в шаблон.В этом случае вы можете поместить логику в фильтр, и тогда ваш шаблон упростится до:

{% if task|display_button:request.user %}...{% endif %}
...