Python Flask Admin modelview函数
我有一个带有flask Admin的flask应用程序,可以使用Python Flask Admin modelview函数,python,flask,flask-sqlalchemy,flask-admin,Python,Flask,Flask Sqlalchemy,Flask Admin,我有一个带有flask Admin的flask应用程序,可以使用/Admin/userviewmodelview管理用户。 我想让它在DB中具有正确组的用户导航到/admin/userview时显示页面,如果没有,则返回纯文本“not admin”。幸运的是,我完成了最后一部分的工作,但不幸的是,我似乎无法完成第一部分(如果他们在正确的组中,则继续显示页面)。以下是相关代码: class MyView(ModelView): @expose('/', methods = ['GET',
/Admin/userview
modelview管理用户。
我想让它在DB中具有正确组的用户导航到/admin/userview
时显示页面,如果没有,则返回纯文本“not admin”。幸运的是,我完成了最后一部分的工作,但不幸的是,我似乎无法完成第一部分(如果他们在正确的组中,则继续显示页面)。以下是相关代码:
class MyView(ModelView):
@expose('/', methods = ['GET', 'POST'])
def index(self):
## grab kerberos username (PROD)
secuser = request.environ.get('REMOTE_USER')
adminresult = User.query.filter_by(usrlevel='admin').all()
adminresult = str(adminresult)
adminresult = adminresult.strip('[]')
managerresult = User.query.filter_by(usrlevel='manager').all()
managerresult = str(managerresult)
managerresult = managerresult.strip('[]')
if secuser in adminresult:
pass <---------------\
elif secuser in managerresult: |- if a user is apart of either, this gives a ValueError
pass <---------------/
else:
return "NOT ADMIN" <--------- This works!
##ADMIN
admin = Admin(flaskapp, index_view=MyHomeView(), name="test APP")
admin.add_view(MyView(User, db.session, "Edit Users"))
如何让ModelView
中的“用户”显示其内容(如果用户在任一组中),如果用户不在,则返回“not admin”文本?我想我已经完成了一半,继续下去似乎是个问题
谢谢 您应该实际办理登机手续:
必须对字符串进行格式化,以查看
secuser
是否在。非常感谢,我已经为此工作了好几天了!我欠你一杯啤酒。如果你必须做字符串格式化,那么你可能依赖于用户
的\u str\u
方法——从长远来看,这不是一个好主意。最好按适当的字段进行实际筛选(添加一个filter\u by(username=secuser)
,其中username
是User中使用的字段名。\uu str\uuuuuu
或User.\uu repr\uuuu
)然后,您可以只使用。首先使用,而不是。全部,然后将检查更改为管理员,并且管理者不是无)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1478, in full_dispatch_request
response = self.make_response(rv)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1566, in make_response
raise ValueError('View function did not return a response')
ValueError: View function did not return a response
class MyView(ModelView):
def is_accessible(self):
# grab kerberos username (PROD)
secuser = request.environ.get('REMOTE_USER')
admins_and_managers = User.query
.filter(User.usrlevel.in_('admin', 'manager'))
# Better yet, filter again on `secuser`
# to avoid loading *every* admin and manager
# on *every* request for this resource
# and then use `.first` or `.one`
.all()
return secuser in admins_and_managers