Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于自定义装饰器管理员角色显示/隐藏导航栏项_Python_Flask_Jinja2_Navbar_Flask Login - Fatal编程技术网

Python 如何基于自定义装饰器管理员角色显示/隐藏导航栏项

Python 如何基于自定义装饰器管理员角色显示/隐藏导航栏项,python,flask,jinja2,navbar,flask-login,Python,Flask,Jinja2,Navbar,Flask Login,装饰师 from functools import wraps from flask import flash, redirect, url_for from flask_login import current_user def admin_required(f): @wraps(f) def wrap(*args, **kwargs): if current_user.role == "Admin": ret

装饰师


from functools import wraps

from flask import flash, redirect, url_for
from flask_login import current_user


def admin_required(f):
    @wraps(f)
    def wrap(*args, **kwargs):
        if current_user.role == "Admin":
            return f(*args, **kwargs)
        else:
            flash("You need to be an admin to view this page.")
            return redirect(url_for('account'))

    return wrap
我可以使用当前用户隐藏/显示jinja中的导航栏项目。是否经过身份验证,但我似乎无法让它使用用户角色。有人知道我如何根据用户角色更改基础模板中的导航栏项目吗

base.html

            <div class="navbar-nav">
              {% if current_user.is_authenticated %}
                {{ render_nav_item('account', 'Account', use_li=True) }}
                {{ render_nav_item('logout', 'Logout', use_li=True) }}
              {% elif current_user.role == "Admin" %}
                {{ render_nav_item('admin_panel', 'Admin Panel', use_li=True) }}
              {% else %}
                {{ render_nav_item('login', 'Login', use_li=True) }}
              {% endif %}

            </div>

和管理员角色是否经过身份验证?也就是说,对于管理员角色,
如果是当前用户,\u是否经过身份验证
评估为
True
?在这种情况下,
if
语句在第一个条件下终止。您需要一个单独的
if
条件来测试经过身份验证的用户是否是管理员

{% if current_user.is_authenticated %}
    {{ render_nav_item('account', 'Account', use_li=True) }}
    {{ render_nav_item('logout', 'Logout', use_li=True) }}
    {% if current_user.role == "Admin" %}
        {{ render_nav_item('admin_panel', 'Admin Panel', use_li=True) }}
    {% endif %}
{% else %}
    {{ render_nav_item('login', 'Login', use_li=True) }}
{% endif %}

和管理员角色是否经过身份验证?也就是说,对于管理员角色,
如果是当前用户,\u是否经过身份验证
评估为
True
?在这种情况下,
if
语句在第一个条件下终止。您需要一个单独的
if
条件来测试经过身份验证的用户是否是管理员

{% if current_user.is_authenticated %}
    {{ render_nav_item('account', 'Account', use_li=True) }}
    {{ render_nav_item('logout', 'Logout', use_li=True) }}
    {% if current_user.role == "Admin" %}
        {{ render_nav_item('admin_panel', 'Admin Panel', use_li=True) }}
    {% endif %}
{% else %}
    {{ render_nav_item('login', 'Login', use_li=True) }}
{% endif %}

哈哈。哦,天哪,是的,管理员角色已经过身份验证。这是一个我忽略了一周的简单错误。今晚我将尝试这个解决方案,并让您知道它是否有效。谢谢,成功了!谢谢你指出我的错误。干杯。哦,天哪,是的,管理员角色已通过身份验证。这是一个我忽略了一周的简单错误。今晚我将尝试这个解决方案,并让您知道它是否有效。谢谢,成功了!谢谢你指出我的错误。干杯