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