下午好,我的 Django 应用程序有问题
在主页上,基本 html 中有标题,有 1 个按钮,但有 2 个不同的值作为链接
{% if roleworker %}
<li><a href="/addservice/">Add</a></li>
{% else %}
<li><a href="/addpage/">Add</a></li>
{% endif %}
roleworker 是数据库中的值,这里是它的模型
class Role(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='Пользователь')
roleworker = models.BooleanField(default=False)
当用户打开index.html时,它等于True,当用户打开indexworker.html(这是来自worker的帖子)时,它等于false,我检查了用户在数据库中的值功能,它工作得很好
当用户打开其他页面时,它必须记住他的值,因为有 django 模型
这是检查用户roleworker值的函数
def rolecheck(request, render):
user = request.user
role = Role.objects.get(user=user)
roleworker = role.roleworker
if roleworker == True:
print('True')
elif roleworker == False:
print('False')
return render(request, 'base.html', {'roleworker': roleworker})
但是在 html 上总是有“{% if roleworker %}”(这意味着 == True) 即使在 django admin 中它也等于 False
{% if roleworker %}
<li><a href="/addservice/">Добавить (услуга)</a></li>
{% else %}
<li><a href="/addpage/">Добавить (статья)</a></li>
{% endif %}
也许有人知道如何解决它,如果有人可以帮助我,我将非常感激,感谢大家阅读它
为什么不将其更改为以下内容:
def rolecheck(request, render):
user = request.user
role = Role.objects.get(user=user)
return render(request, 'base.html', {'role': role})
并在您的模板中执行此操作:
{% if role.roleworker %}
<li><a href="/addservice/">Добавить (услуга)</a></li>
{% else %}
<li><a href="/addpage/">Добавить (статья)</a></li>
{% endif %}
还可以尝试使用
{% url 'add-service' %}
而不是硬编码 url,这将自动链接到名称为 add-service
的 url,您可以在 urls.py
中定义该名称