這個問題在這里已經有了答案: Flask 視圖回傳錯誤“視圖函式沒有回傳回應” (2 個回答) 昨天關閉。
我正在嘗試構建一個燒瓶登錄和注冊系統。一切正常,除非用戶向表單提供不正確的輸入,然后會出現錯誤,因為還沒有作業錯誤處理。我正在使用 wtforms,這里是注冊表單類:
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
email = StringField('Email', validators=[DataRequired(),Email()])
password = PasswordField('Password', validators=[DataRequired(), Length(min=4)])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), Length(min=4), EqualTo('password')])
submit = SubmitField('Sign Up')
這是注冊路線
@app.route('/register', methods=["GET", "POST"])
def register():
form = RegistrationForm()
if request.method == "POST":
if form.validate_on_submit():
return redirect(url_for('home'))
else:
return render_template('register.html', form=form)
我已經厭倦了處理 html 中的錯誤,但是每次用戶提供不正確的輸入時,它都會顯示此錯誤訊息“TypeError:'register' 的視圖函式沒有回傳有效回應。該函式要么回傳 None 要么在沒有回傳的情況下結束陳述。” 這是我的 html 表單:
<form action="/register" method="POST">
<h1>Create Account</h1>
{{ form.hidden_tag() }} {% if form.username.errors %} {{
form.username(placeholder="Username", class="is-invalid") }} {% for
error in form.username.errors %}
<span>{{ error }}</span>
{% endfor %} {% else %} {{ form.username(placeholder="Username") }} {%
endif %} {% if form.email.errors %} {{ form.email(placeholder="Email",
class="is-invalid") }} {% for error in form.email.errors %}
<span>{{ error }}</span>
{% endfor %} {% else %} {{ form.email(placeholder="Email") }} {% endif
%} {% if form.password.errors %} {{
form.password(placeholder="Password", class="is-invalid") }} {% for
error in form.password.errors %}
<span>{{ error }}</span>
{% endfor %} {% else %} {{ form.password(placeholder="Password") }} {%
endif %} {% if form.confirm_password.errors %} {{
form.confirm_password(placeholder="Confirm Password",
class="is-invalid") }} {% for error in form.confirm_password.errors %}
<span>{{ error }}</span>
{% endfor %} {% else %} {{ form.confirm_password(placeholder="Confirm
Password") }} {% endif %}
<div>{{ form.submit(hljs-string">") }}</div>
</form>
任何回應或幫助將不勝感激。謝謝!
uj5u.com熱心網友回復:
每個視圖都必須回傳一些東西。如果方法已發布但未驗證,則您的方法不回傳任何內容。這是一個邏輯問題,與 wtforms 無關。
if request.method == "POST":
if form.validate_on_submit():
return redirect(url_for('home'))
else:
return 'oops'
else:
return render_template('register.html', form=form)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316757.html
