Когда я использую флягу, в моем первом шаблоне (a.html) Я писал:Почему функция url_for() в Flask вызвала эту ошибку?
{{url_for('auth.confirm', token=token, _external=True)}}
Он дал правильный сайт: /auth/confirm/<token>
Но в другом: {{url_for('auth.forget', token=token, _external=True)}}
Он дал мне сайт, подобный этому: /auth/forget?token=<token>
Что делает разницу?
Коды здесь:
@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)
Я, действительно написал '', но он не работает? –
Спасибо! Я ошибаюсь в именах этих двух конечных точек. –