Я пытаюсь использовать разрешения по умолчанию Django, чтобы показывать ссылку на страницу сообщения в блоге, только если у них есть разрешения для сообщения в блоге.
Замечательная документация Django предоставляет следующее:
Assuming you have an application with an app_label foo and a model named Bar,
to test for basic permissions you should use:
add: user.has_perm('foo.add_bar')
change: user.has_perm('foo.change_bar')
delete: user.has_perm('foo.delete_bar')
view: user.has_perm('foo.view_bar')
Моему приложению присвоено имя about
Вот моя модель:
# models.py
class BlogPost(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(max_length=250, null=True)
image = models.ImageField(upload_to='blog/main')
content = HTMLField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
draft = models.BooleanField(default=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("post-detail", kwargs={"pk": self.id})
Вот мой HTML, где я пытаюсь фильтровать
# base.html
{% if user.has_perm('about.add_blogPost') %}
<li {% if url_name == 'post' %}class="nav-item active"{% else %}class="nav-item"{% endif %}><a href="{% url 'post' %}" class="nav-link">Add Post</a></li>
{% endif %}
Всякий раз, когда я следую этому, как написано в документации, я получаю: Could not parse the remainder: '('about.add_blogPost')' from 'user.has_perm('about.add_blogPost')'
Что я делаю не так?