我有這個代碼:
def signup(fname, email, password):
user={
"name": fname,
"email":email,
"password":password
}
@app.route('/', methods =["GET", "POST"])
def login():
if request.method == "POST":
name = request.form.get("fname")
email = request.form.get("email")
password = request.form.get('password')
signup(name, email, password)
return redirect(url_for('user_blueprint.main', usr = name))
return render_template('form.html')
藍圖:
@user.route('/<usr>')
def main(usr):
return f'Hello {usr}'
當我到達該頁面時,url 更改為 ip/user/username,如果我更改 url 的“用戶名”,我的 html(回傳名稱)也會更改,誰能告訴我如何使我的頁面保持不變?我不介意我的網址是否必須包含用戶名,但是當我不輸入它時,flask 會給我錯誤“缺少引數”。
uj5u.com熱心網友回復:
由于您缺少代碼的某些部分,我將假設一些內容,然后如果我需要更改內容,您可以寫評論。
@user您在代碼的第二部分中使用的是user_blueprint,我假設您已經user在主應用程式中使用前綴注冊了它。所以讓我解釋一下如何獲得 URL <IP>/user/<username>。
當您呼叫url_for(user_blueprint.main, usr = name)flasks 時會查找藍圖及其注冊方式,因此它會user從您的配置中獲取前綴,然后它會替換usr您注冊的唯一路由中的引數,這就是您獲取的方式/user/<username>。
因此,如果您想擁有唯一的 URL,那么您需要usr從 URL 中洗掉并嘗試通過name其他方式(例如session)。這是代碼示例(只是需要的部分):
from flask import session
@app.route('/', methods =["GET", "POST"])
def login():
if request.method == "POST":
...
session['usr'] = name
return redirect(url_for('user_blueprint.main'))
return render_template('form.html')
...
@user.route('/')
def main():
return f'Hello {session['usr']}'
如果您選擇使用session此處是一個有用的鏈接,您需要在開始使用會話之前檢查它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491906.html
