2017-05-04 15 views
-1

私は青写真の構造を持つモジュラーアプリを持っています。私は青写真を登録し、彼らは正常に動作しています。FLASK - パラメータ付きの青写真でエンドポイント用のURLを作成できませんでした

werkzeug.routing.BuildError:私は、パラメータを持つなurl_forで問題を抱えています[「トークン」]の値ここ

私のエンドポイントが家であると終点「confirm_email」のURLを構築することができませんでした.py

@home.route('/register',methods=['GET','POST']) 
def register(): 

    form = RegistrationForm(request.form) 
    print(form, file=sys.stderr) 
    print(form.email, file=sys.stderr) 
    if request.method == 'POST' and form.validate(): 
     u = User(
      email = form.email.data, 
      password = form.password.data 
     ) 
     email_ddbb = User.query.filter_by(email=form.email.data).first() 
     # we register the user 
     if email_ddbb is None: 
      # Now we'll send the email confirmation link 
      subject = "Confirm your email" 
      token = ts.dumps(u.email, salt='email-confirm-key') 
      print(url_for('user.activate',token=token,_external=True)) 
      confirm_url = url_for('user.activate',token=token,_external=True) 
      html = render_template('mail/activate.html', confirm_url=confirm_url) 
      # we send the email from utils.py 
      send_email(u.email, subject, html) 
      db.session.add(u) 
      db.session.commit() 
      flash('Thanks for registering, please check your inbox') 
      return redirect(url_for('home.index')) 
     else: 
      flash('Email already in use') 
      return redirect(url_for('home.index')) 
     #TODO MUST BE UNIQUE 
    else: 
     flash('Please enter a valid email address') 
     return redirect(url_for('home.index')) 

、ここuser.py

@user.route('/confirm/<token>') 
def activate(token): 
    try: 
     email = ts.loads(token, salt="email-confirm-key", max_age=86400) 
    except: 
     abort(404) 
    user = User.query.filter_by(email=email).first_or_404() 
    user.verified = True 
    db.session.add(user) 
    db.session.commit() 
    return redirect(url_for('home.index')) 
内の他のエンドポイントであります
+0

私は、データベースにエラーが発生する前のユーザーをコミットし、私が訪問した場合**手動**印刷URL(すなわちのhttp:/ /127.0.0.1:5000/confirm/ImFzZGZAYXNkZi5jb20i.C-xnqg.4Hb4DU4b-Txiy3v7yhNdW6-beUE)それは動作します – jmrueda

+0

app.url_mapエンドポイントを確認し、まだ手掛かりはありません'(HEAD、GET、POST、OPTIONS ) - > user.activate>、 – jmrueda

答えて

0

オーケー、問題はそこではなく、郵送ではありませんでした:

def send_email(to, subject, template, **kwargs): 
    msg = Message(app.config['MAIL_SUBJECT_PREFIX'] + subject, 
         sender=app.config['MAIL_SENDER'], recipients=[to]) 
    msg.body = '' 
    token = ts.dumps(to, salt='email-confirm-key') 

    confirm_url = url_for(
     'confirm_email', <-- should be user.activate 
     token=token, 
     _external=True) 

    msg.html = render_template(
      'activate.html', 
      confirm_url=confirm_url) 
    mail.send(msg) 
関連する問題