私は現在、FlaskとFlask-User拡張を使用して認可を処理するWebアプリケーションを開発中です。私のテンプレートでFlask - グローバル値を正しく設定する方法
{% if current_user.is_authenticated and current_user.has_roles('Admin') %}
:このような私のviews.py
ファイルと何かに
@application.route('/dummy')
@roles_required('Admin')
@login_required
def dummy():
:現時点では私はこのような何かを持っています。
ここで、私はロール名の点で自分の考えを変えてから、そのプロジェクトを検索して置き換える必要がありました。私はADMIN_ROLE
のようなものを定義して、views.py
やその他のテンプレートの中でアクセスできるようにしたかったのです。私はちょうど私が役割の名前を変更したいときはいつでも設定ファイルを変更したいと思います。
私は私の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あなた、それは素晴らしい答えです。 これはジンジャで 'app.config'を使用する必要があるにもかかわらず、最も論理的な方法であり、クリーンなソリューションのようです。あなたは私が達成しようとしていることがどこの役割の文字列名を書いているよりも優れていることに同意しますか? –
はい、変更可能なコード内に何かがある場合は、複数ではなく1か所で変更することをお勧めします。 –
私は小さな問題に遭遇しました。 Jinjaでjavascriptを使用する場合、 'if($(this)).val()!== {{config ['ADMIN_ROLE']}})'これは 'if($(this) ADMINはconfig.pyでインポートされた変数の名前で、 '' Admin ''の値ではありません。 –