Wenn ich Kolben verwenden, in meiner ersten Vorlage (a.html) schrieb ich:Warum verursacht die Funktion url_for() in Flask diesen Fehler?
{{url_for('auth.confirm', token=token, _external=True)}}
Es gab die richtige Stelle: /auth/confirm/<token>
Aber in einem anderen: {{url_for('auth.forget', token=token, _external=True)}}
Es gab mir eine Seite wie folgt: /auth/forget?token=<token>
Was macht den Unterschied?
Codes hier:
@auth.route('/forget', methods=['GET', 'POST'])
def forget():
form=ForgetPasswordForm()
if form.validate_on_submit():
user=User.query.filter_by(email=form.email.data).first()
if user:
token=user.generate_forget_token()
send_email(user.email, 'Reset your password', 'auth/email/forget', token=token)
return redirect(url_for('main.index'))
flash("Email is not exist")
return render_template('auth/forget.html',form=form)
@auth.route('/forget/<token>', methods=['GET', 'POST'])
def forget_reset(token):
try:
email=User.confirm_forget(token)
except:
return render_template('404.html')
form=PasswordOnlyForm()
if form.validate_on_submit():
user=User.query.filter_by(email=email).first()
user.password=form.password.data
db.session.add(user)
db.session.commit()
flash('Succeed, now login!')
return redirect('auth/login')
return render_template('auth/PasswordOnly.html',form=form)
Ich habe in der Tat schrieb '', aber es funktioniert nicht? –
Danke! Ich habe Namen für diese beiden Endpunkte verwechselt. –