Теги шаблонов Django - попытки разрешить пользователям удалять собственные комментарии - PullRequest
0 голосов
/ 02 мая 2018

Я довольно новичок в Джанго. Это кажется очень простым, но я не могу понять, что здесь происходит.

<div class="comment">
  <h2 class="commenter">{{ comment.user }}</h2>
  <p class="commentdate">{{ comment.created }}</p>
  <p class="commentbody">{{ comment.body }}</p>
  "{{ comment.user }}" "{{ user.username }}"
  {% ifequal commment.user user.username %}
  <p><a href="#">Delete comment</a></p>
  {% endifequal %}
</div>

Я хочу, чтобы кнопка удаления отображалась только в том случае, если зарегистрированный пользователь совпадает с пользователем, оставившим комментарий. {{comment.user}} и {{user.username}} печатают один и тот же результат (это всего лишь тестовая строка, чтобы увидеть, что в них хранится), но тег {% ifequal comment.user user.username%} оценивая как ложное по какой-то причине. Что я делаю неправильно? Это может быть проблема с типом данных? Если это так, я не уверен, как решить эту проблему в тегах шаблона.

1 Ответ

0 голосов
/ 02 мая 2018

Через шаблон django у вас есть доступ к request

Как правило, вы можете получить доступ к зарегистрированному пользователю с помощью request.
Если comment.user является экземпляром django.auth.models.User.

Логика может быть:

ПРИМЕЧАНИЕ: Это не мешает пользователю удалять другие комментарии, все логики должны быть выполнены в вашем бэкэнде. Убедитесь, что текущий пользователь владеет комментарием

<div class="comment">
    <h2 class="commenter">{{ comment.user }}</h2>
    <p class="commentdate">{{ comment.created }}</p>
    <p class="commentbody">{{ comment.body }}</p>

    "{{ comment.user }}" "{{ user.username }}"

     {% if request.user == comment.user %}
         <p><a href="#">Delete comment</a></p>
     {% endif %}

     <!-- or with ifequal templatetag -->
     {% ifequal comment.user request.user %}
         <p><a href="#">Delete comment</a></p>
     {% endifequal %}


</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...