flask-registration icon indicating copy to clipboard operation
flask-registration copied to clipboard

url_for failure

Open TaiwoAkinde opened this issue 5 years ago • 0 comments

Hi, I've been trying to implement the "User Registration Email Confirmation" module in your project but i keep getting this error: werkzeug.routing.BuildError: Could not build url for endpoint 'admin.confirm_email'. Did you forget to specify values ['token']?

Below are the functions: `# Register @admin.route('/register', methods=['GET', 'POST']) def register__(): title = 'Register' form = RegistrationForm(request.form)

if form.validate_on_submit():
    user = User(email=form.email__.data,
                password=form.password__.data,
                first_name=form.first_name__.data,
                last_name=form.last_name__.data,
                confirmed=False)

    db.session.add(user)
    db.session.commit()

    token__ = generate_confirmation_token(user.email)

    confirm_url = url_for('admin.confirm_email', token=token__, _external=True)
    html = render_template('activate.html',confirm_url=confirm_url)
    subject = 'Please confirm your email'
    send_email(user.email, subject, html)

    login_user(user)

    flash("Registration is Successful!\nA confirmation email has been sent via email","success")
    return redirect(url_for("admin.unconfirmed"))

return render_template('registration.html', form=form, title=title)

Email Confirmation

@admin.route('/confirm/') @login_required def confirm_email(token): title='Email Confirmation' if current_user.confirmed: flash('Account already confirmed. Please login.', 'success') return redirect(url_for('report.homepage'))

email = confirm_token(token)
user = User.query.filter_by(email=current_user.email).first_or_404()

if user.email == email:
    user.confirmed = True
    user.confirmed_on = datetime.datetime.now()
    db.session.add(user)
    db.session.commit()
    flash('You have confirmed your account. Thanks!', 'success')
else:
    flash('The confirmation link is invalid or has expired.', 'danger')
return redirect(url_for('report.homepage'))

`

TaiwoAkinde avatar May 03 '20 01:05 TaiwoAkinde