Python 用户组的路由前缀
我有一个具有多个用户角色的flask应用程序。所有角色都需要访问“索引”页面,但每个角色的页面都不同。要实现这一点,我认为最好的解决方案是为某些用户角色添加前缀。例如,管理员角色将转到,合作伙伴将转到 我已经看到了一些关于如何向所有视图添加路由前缀的信息,但我只希望它基于用户的角色。实现这一目标的最佳方式是什么?有人能帮我往正确的方向推吗 谢谢 我的建议是去 解决这个问题不需要担心域前缀 显然,您将拥有Python 用户组的路由前缀,python,flask,Python,Flask,我有一个具有多个用户角色的flask应用程序。所有角色都需要访问“索引”页面,但每个角色的页面都不同。要实现这一点,我认为最好的解决方案是为某些用户角色添加前缀。例如,管理员角色将转到,合作伙伴将转到 我已经看到了一些关于如何向所有视图添加路由前缀的信息,但我只希望它基于用户的角色。实现这一目标的最佳方式是什么?有人能帮我往正确的方向推吗 谢谢 我的建议是去 解决这个问题不需要担心域前缀 显然,您将拥有用户模型,该模型具有用户相关字段。添加角色作为用户模型 models.py中的用户模型 vie
用户
模型,该模型具有用户
相关字段。添加角色
作为用户模型
models.py中的用户模型
views.py
在这里,您应该添加decorator,以确保用户在访问此查看方法之前登录
其他信息:
如果要将此查看方法
限制为特定的用户角色
,可以编写@roles\u required
装饰器,将输入作为允许的\u角色
接收并基于它返回
roles\u required
decorator实现概述
一旦您实现了所需的角色
,请将其添加到相应的视图
方法中,就像我们为定义索引视图()添加的@login\u required
一样
class User(db.Model):
..........
..........
role = db.Column(db.String(50)) #admin, customer, agent etc..
@app.route('/index' methods=('GET','POST'))
@login_required
def index_view():
#get the current logged in user object
user = current_user or g.user #based on your way of implementation
if user.role == 'admin':
return render_to_response('admin_index.html',{'data':'This is admin page'})
elif user.role == 'agent':
return render_to_response('agent_index.html',{'data':'This is agent page'})
else:
return render_to_response('default_index.html',{'data':'This is default page'})
def roles_required(func):
def wrapper(*args, **kwargs):
for i in args:
user = current_user #get user object
if user.role == i:
return func()
return wrapper
@roles_required('admin','agent')