django 应用程序中 html 中的 if else 错误

问题描述 投票:0回答:1

下午好,我的 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 %}

也许有人知道如何解决它,如果有人可以帮助我,我将非常感激,感谢大家阅读它

python html django if-statement
1个回答
0
投票

为什么不将其更改为以下内容:

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

中定义该名称
© www.soinside.com 2019 - 2024. All rights reserved.