从应用程序中的两个不同页面访问一个flask路由

2024-03-29 08:08:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个flask应用程序,当用户登录或用户完成注册时,它会打开主页。然而,我遇到的问题是,我试图从注册页面和主屏幕访问“home”路由,这两种方法都使用“POST”方法。你知道吗

    @app.route("/home", methods=["GET","POST"])
    def login():
        """Logs In"""
        if request.method == 'POST':
            user_name = request.form['username']
            password = request.form['password']

            if check_login(user_name,password,db):
                return render_template("home.html")
        return "These aren't the droids you're looking for"

    def registration():
        """Signs Up"""
        if request.method == 'POST':
            user_name = request.form['username']
            password = request.form['password']

        if register(user_name,password,db):
            return render_template("home.html")
        else:
            return "Not successful"

注册方法是从我的新用户.html模板和登录名从登录.html. 不幸的是,我从新用户.html, “无法为终结点'注册'生成url。你是说“静态”吗你知道吗

我的猜测是flask不允许我在一条路径下有多个方法。解决方法是什么?你知道吗


Tags: 方法用户nameformflaskhomereturnif
1条回答
网友
1楼 · 发布于 2024-03-29 08:08:13

您应该将代码重新组织为:

@app.route("/home", methods=["GET"])
def home():
    return render_template("home.html")

@app.route("/login", methods=["POST"])
def login():
    """Logs In"""
    if request.method == 'POST':
        user_name = request.form['username']
        password = request.form['password']

        if check_login(user_name,password,db):
            return redirect(url_for('home'))
    return "These aren't the droids you're looking for"

@app.route("/registration", methods=["POST"])
def registration():
    """Signs Up"""
    if request.method == 'POST':
        user_name = request.form['username']
        password = request.form['password']

    if register(user_name,password,db):
        return return redirect(url_for('home'))
    else:
        return "Not successful"

home()只需显示HTML表单(登录和注册)

login()+registration()是两种不同的方法,具有两种不同的路由,如果表单成功,它将重定向到您的主页

相关问题 更多 >