Перенаправить пользователя обратно на предыдущую страницу с переменными / аргументами - PullRequest
0 голосов
/ 20 марта 2019

С Flask я пытаюсь создать страницу регистрации пользователя ('/ signup'), по которой при нажатии кнопки 'регистрация' пользователи будут перенаправлены на '/ submit_registration'. Это вызовет функцию, которая проверяет имя пользователя и адрес электронной почты, которые были предоставлены, и гарантирует, что они уже не существуют в базе данных. Этот вызов вернет одно из следующего:

-success
-email already exists
-username already exists

Если сообщение успешно, то я знаю, что вызов базы данных добавил пользователя в базу данных, и я хочу направить его на страницу входа ('/ login'). Если возвращаемое сообщение не «успешно», я хочу перенаправить его обратно на страницу регистрации («/ регистрация») с сообщением, отображающим сообщение, информирующее пользователей о том, что им нужно предоставить другое имя пользователя и / или пароль. Мой текущий сценарий ниже (обратите внимание, что мои вызовы базы данных выполняются в другом сценарии):

from flask import Flask, render_template, request, redirect, url_for

import db.db_mgmt as db_mgmt

app = Flask(__name__)


@app.route('/')
@app.route('/signup')
def signup():
    return render_template('signup.html', message=result)


@app.route('/submit_registration', methods=['POST'])
def add_user():
    username = request.form['username']
    first = request.form['first']
    last = request.form['last']
    email = request.form['email']
    password = request.form['password']
    result = db_mgmt.add_user(username, first, last, email, password)

    if result == 'success':
        return redirect(url_for('login')) 
    else:
        return redirect(url_for('signup', message = result))


@app.route('/login')
def login():
    return render_template('login.html')


@app.route('/home', methods=['POST'])
def homepage():
    return "Welcome to your homepage"


@app.route('/validate_login', methods=['POST'])
def validate_login():
    username = request.form['username']
    password = request.form['password']

    if db_mgmt.login():
        return redirect(url_for('homepage'))
    else:
        return redirect(url_for('login', message = 'Invalid Login'))


app.run(debug=True, host='0.0.0.0', port=5000)

Мои ошибки связаны с той частью, которую я недавно добавил в функцию регистрации:

return render_template('signup.html', message=result)

Это работало до добавления ', message = result; однако теперь, когда я пытаюсь запустить этот скрипт, я получаю следующее:

return render_template('signup.html', message=result)
NameError: name 'result' is not defined

Каков рекомендуемый способ справиться с этим? Любое и все понимание будет с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...