0

I have an endpoint:

@register_endpoint.route('/<string:token>/verify', methods=['GET'])
def display_register_form(token):
    error = None
    decrypted_token = SecureMessage().decrypt(token)
    user_data = json.loads(decrypted_token)
    form = RegisterAccountForm()
    return render_template("auth/account_validation.html", form=form, error=error, user_data=user_data)


@register_endpoint.route('/<string:token>/verify', methods=['POST'])
def register_account():
    form = SignupForm(request.form)
    if form.validate_on_submit():
        email = form.email.data
        first_name = form.first_name.data
        last_name = form.last_name.data
        password = form.password.data
        json_user = json.dumps({"first_name": first_name, "last_name": last_name, "email": email, "password": password})
        response = requests.post("http://0.0.0.0:5000/api/v1/accounts", json=json_user)
        if response.status_code == 200:
            return redirect(url_for('account.signin'))

The GET endpoint display the following form:

<form action="{{ url_for('register.register_account') }}" method="post">
        <input name="first_name" class="user" type="text" required="" placeholder="{{ user_data["first_name"] }}" disabled/><br>
        <input name="first_name" class="user" type="text" required="" placeholder="{{ user_data["last_name"] }}" disabled/><br>
        <input name="email" class="user" type="text" required="" placeholder="{{ user_data["email"] }}" disabled/><br>
        <input  placeholder="Password" name="password" class="pass" type="password" required=""><br>
        <input  placeholder="Password verification" name="password_verification" class="pass" type="password" required=""><br>
        {{ form.csrf_token }}
        <input type="submit" value="">
    </form>

When the user fill the it is supposed to be post on the POST endpoint above, the problem is that I have an error:

Could not build url for endpoint 'register.register_account'. Did you forget to specify values ['token']?

How can I solve this problem? Can I make the token optional? What is the best architecture to solve my problem?

mel
  • 2,730
  • 8
  • 35
  • 70
  • possible duplicate: https://stackoverflow.com/questions/14032066/flask-optional-url-parameters –  Jun 20 '17 at 04:08
  • @mel try to change `url_for('register.register_account')` to `url_for('register.register_account', token=form.csrf_token)`. In your route _token_ is required param. By the way, you forgot to add arg _token_ to `register_account` – Danila Ganchar Jul 09 '17 at 17:03

0 Answers0