현재 웹 응용 프로그램에서 Flask 및 Flask-User 확장을 사용하여 권한을 처리하고 있습니다. 이처럼 내 views.py
파일과 뭔가플라스크 - 전역 값을 올바르게 설정하는 방법
@application.route('/dummy')
@roles_required('Admin')
@login_required
def dummy():
:
{% if current_user.is_authenticated and current_user.has_roles('Admin') %}
내 템플릿 순간에 나는 이런 식으로 뭔가가있다.
이제 역할 이름의 관점에서 내 마음을 바꾼 다음 해당 프로젝트를 찾아서 바꾸기 위해 전체 프로젝트를 검색해야했습니다. 내 views.py
또는 다른 템플릿에서 액세스 할 수있는 ADMIN_ROLE
글로벌을 정의하려고합니다. 나는 역할의 이름을 바꾸고 싶을 때마다 설정 파일을 바꾼다.
config.py
ADMIN_ROLE = "Admin"
을 설정하고
@roles_required(current_app.config['ADMIN_ROLE'])
를 작성하여 시도하지만 그건 나에게 다음과 같은 오류 제공 :
RuntimeError: Working outside of application context. This typically means that you attempted to use functionality that needed to interface with the current application object in a way. To solve this set up an application context with app.app_context(). See the documentation for more information.것은 그래서 잘못된해야합니다. 무엇을 시도하고있는 가장 올바른 방법은 무엇입니까?
감사
routes.py config.py 너, 대단한 대답이야. jinja에서 여전히'app.config'를 사용해야하지만 이것은 가장 논리적 인 경로이며 깨끗한 솔루션처럼 보입니다. 내가 성취하려고하는 것이 모든 역할의 문자열 이름을 쓰는 것보다 낫다는 것에 동의하십니까? –
예, 변경 될 수있는 코드가있는 경우 여러 개가 아닌 한 곳에서 변경하는 것이 좋습니다. –
나는 작은 문제에 부딪쳤다. Jinja에서 javascript를 사용할 때'if ($ (this) .val()! == {{config [ 'ADMIN_ROLE']}})'는 if ($ (this))로 변환됩니다. ADMIN은 config.py에서 가져온 변수의 이름이고''Admin ''의 값이 아닙니다. –