Я тщетно пытаюсь создать простой тег шаблона Django, чтобы показать или скрыть ссылку "удалить" рядом с отправленным комментарием на моем сайте.
Короче говоря, я хочу передать объект комментария в тег шаблона, определить, авторизован ли пользователь, который в данный момент вошел в систему, удалить комментарий, а затем показать или не показать ссылку.
Использование в моем шаблоне будет выглядеть так:
{% load access_tags %}
{% if_authorized comment %}
<a href="{% url delete_comment comment.id %}">Delete</a>
{% endif_authorized %}
Будьте уверены, что я также проверяю в соответствующем представлении, имеет ли пользователь право удалять комментарий.
Имеет ли этот тип тега конкретное имя? Это, безусловно, поможет мне с поиском в Google, если это будет сделано. Спасибо за вашу помощь!
ОБНОВЛЕНИЕ 1:
Как работает мой сайт, два человека потенциально могут удалить комментарий: 1) создатель комментария и 2) владелец поста, где был оставлен комментарий. Из-за этого мне нужно по каждому комментарию определить, присутствует ли одно из этих условий.
Я не думаю, что могу использовать что-то вроде встроенной системы разрешений Django, так как для этого требуется, чтобы разрешения были установлены глобально для каждого типа объекта, а не для конкретного экземпляра объекта.
В моем случае у пользователя "Боб" могут быть права на удаление комментария (если он написал его или он находится на созданном им посте), но ему также может быть запрещено удалять его (если он смотрит на комментировать чужой пост).
ОБНОВЛЕНИЕ 2:
Похоже, что вы не можете передавать объекты в тег шаблона, только строки: «Хотя вы можете передать любое количество аргументов в тег шаблона с помощью token.split_contents (), все аргументы распаковываются как строки литералы «. Я предполагаю, что передам идентификатор объекта комментария и вытяну его в теге.
Я был неправ по этому поводу, просто должен получить доступ к переданному объекту, как:
self.comment.resolve(context).user
против
self.comment.user