我的建议是
您无需担心域前缀即可解决此问题。
显然,您将拥有具有user 相关字段的user 模型。添加role 作为user model 的字段之一
models.py 中的用户模型
class User(db.Model):
..........
..........
role = db.Column(db.String(50)) #admin, customer, agent etc..
views.py
@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'})
在这里,您应该添加 login_required 装饰器,以确保在访问此 view method 之前登录 user
附加信息:
如果您想将此view method 限制为特定的user roles,您可以编写@roles_required 装饰器,它将输入作为allowed_roles 并基于它返回
roles_required装饰器实现概览
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,添加它对应的view方法,就像我们为def index_view()添加@login_required一样
@roles_required('admin','agent')