注册html页面中的内部服务器错误

时间:2020-10-30 12:14:12

标签: python html sql conditional-statements

我正在尝试为网站创建注册页面。用户查看的表单非常简单,并且我之前已经实现过,所以我认为情况并非如此。

但是,我遇到的麻烦是让用户输入信息,对密码进行哈希处理,然后使用SQL将密码和所有其他数据插入到表中。我也有条件,例如,如果用户不是唯一的,或者字段中未键入任何内容。

当我运行flask run时,会出现500错误。事实是,当html代码对我来说不是什么新鲜事物,而对python代码而言,我为什么会收到此错误?

这是我写的:

register.html:

{% extends "layout.html" %}

{% block title %}
    Register
{% endblock %}

{% block main %}
    
    <form action="/register" method="post">
     
     <input type="text" name="email" placeholder="email"><br>
        
     <input type="text" name="username" placeholder="username"><br>
     
     <input type="text" name="password" id="pass" placeholder="password"><br>
     
     <input type="text" name="confirm" id="confirm" placeholde="confirm"><br>
     
     <pre> </pre>
     
     <input type="submit" value= "Submit Form">
    </form>

{% endblock %}

application.py:

@app.route("/register", methods=["GET", "POST"])
def register():
    """Register user"""
    

    if request.method == "POST":

        #if input isn't typed
        if not request.form.get("username"):
            return render_template("failuser.html")
    
        if not request.form.get("password"):
            return render_template("failpass.html")
            
        if not request.form.get("confirm"):
            return render_template("failpass.html")  
            
        if request.form.get("password") != request.form.get("confirm"):
            return render_template("failpass.html")  
        
        #if username already exists
        rows = db.execute("SELECT * FROM users WHERE username =: username" ,request.form.get("username"))
        
        if len(rows) >= 1:
            return render_template("failuser.html")
        
        #insert info into table    
        db.execute("INSERT INTO users(username, hash, email) VALUES (:username, :password, :email)",
                   username = request.form.get("username"),
                   hash=generate_password_hash(request.form.get("password")),
                   email=request.form.get("email"))
        
        #remember user           
        rows = db.execute("SELECT * FROM rows WHERE username = :username",
                   username=request.form.get("username"))   
                   
        session["user_id"] = rows[0]["id"]
        
        return render_template("/index")
    
    else:
        return render_template("/register")
 

如果需要进一步的信息,请务必告诉我,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为问题出在最后四行:

        return render_template("/index")
    
    else:
        return render_template("/register")

您正尝试返回html页面,而不是(可能)希望将其重定向到该url。

代替render_template使用重定向

相关问题