3

フラスコセキュリティでフラスコへのログインを有効にしようとしています。次のコードは正常に動作します (私は にインポートし__init__.pyます)

from flask import Blueprint, render_template, request, redirect, url_for
from coursly import app
from coursly.models import *
from flask.ext.security import Security, LoginForm, SQLAlchemyUserDatastore

user_datastore = SQLAlchemyUserDatastore(db, user.User, user.Role)
Security(app, user_datastore)

user = Blueprint('user', __name__)

@user.route('/')
def index():
    return redirect(url_for("user.login"))

@user.route('/login', methods=['GET', 'POST'])
def login():
    return render_template('user/login.html', content='Login Page', action=url_for('auth.authenticate'), form=LoginForm())

ただし、変更user = Blueprint('user', __name__)すると、.user = Blueprint('user', __name__, url_prefix='/blah')で失敗しますwerkzeug.routing.BuildError BuildError: ('auth.authenticate', {}, None)。url_for が問題ですが、理由がわかりません。はる!

4

2 に答える 2

8

理解した。Flask-security は既に/login /logout組み込まれており、私のログイン機能はほとんど無視されていました。通常のアプリ実行時には使用されませんでした。例外url_forはまだ処理されていたため、BuildError が発生しました。

https://github.com/dracule/FlaskBootstrapSecurityの古い例を使用しようとしましたが、失敗しました。Flask-Security は 3 か月前に更新されました。action パラメータを更新する必要がaction=url_for('security.login')あり、動作します。

TL;DR を追加するurl_prefixと、Flask-Security の組み込みは使用され/login /logoutず、多くの変数の名前が変更されました

于 2012-12-26T17:12:35.110 に答える