Flask-Admin과 함께 플라스크 앱을 사용하여 /admin/userview
modelview의 사용자를 관리 할 수 있습니다. 올바른 그룹을 가진 DB에있는 사용자가 /admin/userview
으로 이동할 때 페이지를 표시하고 싶지 않은 경우 일반 텍스트 "not admin"을 반환하고 싶습니다. 다행히도 나는 마지막 부분을 가지고 있지만, 불행히도 첫 번째 부분을 얻는 것처럼 보이지 않는다. (올바른 그룹에있는 페이지를 계속해서 보여줄 수는있다.) 여기Flask-Admin modelview 기능
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"))
나는 사용자가 adminresult
또는 managerresult
에있을 때 얻을 추적 것 : 여기에 관련 코드가있어 나는 ModelView
"사용자"를 얻는 방법
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
이 경우이 내용의 표시 사용자가 어느 그룹에 있으며, 그렇지 않은 경우 "관리자가 아닌"텍스트를 반환합니다. 나는 그 중 절반이 끝난 것 같아요. 계속해서 문제가되는 것 같아요.
고마워요!
이 secuser'가 있었다'있는지를 얻을 서식 문자열을해야했다 나는 일 동안이 작업을 봤는데, 정말 감사합니다. ! 너 한테 맥주 빚 졌어. – asdfgthereisnocowlevel
문자열 형식화를해야한다면'User'의'__str__' 메쏘드에 의존하고있을 것입니다 - 장기적으로 좋은 생각은 아닙니다. 적절한 필드에 실제로 필터링하는 것이 더 낫습니다 ('User___ str__' 또는'User .__ repr__'에서 사용되는 필드의 이름 인'username_'이'filter_by (username = secuser)'를 추가하십시오). '.all' 대신'.first'를 사용하고'admins_and_managers is not None'으로 체크를 변경하십시오) –