url_for 指向一個有效的視圖,仍然出現以下錯誤。我也嘗試添加 else 塊來減輕錯誤,但以某種方式報告了相同的錯誤。
werkzeug.routing.BuildError:無法為值為 ['next'] 的端點“login”構建 url。您的意思是“core.login”嗎?
編碼:
from ..extensions import ldap
from .forms import LoginForm
core = Blueprint('core', __name__)
@core.route('/')
@ldap.login_required
def index():
return render_template('index.html')
@core.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
if g.user:
return redirect(url_for('index'))
if request.method == 'POST':
user = request.form['user']
passwd = request.form['passwd']
test = ldap.bind_user(user, passwd)
if test is None or passwd == '':
return 'Invalid credentials'
else:
session['user_id'] = request.form['user']
return redirect('/')
return render_template('sign-in.html', form=form)
@core.route('/logout')
def logout():
session.pop('user_id', None)
return redirect(url_for('index'))
我正在使用 python 3.8 和燒瓶 2.0.2。
uj5u.com熱心網友回復:
這是預期行為,因為您的login端點是core藍圖的一部分。使用url_for時應該使用路由端點名稱而不是視圖函式名稱:
url_for('core.login')
正如例外所暗示的那樣。
如果您需要自定義端點的名稱,您可以這樣做:
@core.route('/login', methods=['GET', 'POST'], endpoint='my_login')
...
url_for('core.my_login')
如果有任何混淆,您可以隨時檢查app.url_map以查看定義了哪些路由以及它們的端點名稱是什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334870.html
上一篇:在運行時使用flask從python中的另一個檔案動態呼叫函式
下一篇:如何匯入路由燒瓶
