2015-09-16 60 views
-1

我正在尝试将用户注册到sqlite数据库中。 我的表单包含一个带有数字值的隐藏字段。将html变量传递给烧瓶中的函数时出错

当我处理表单时,它返回以下错误: “浏览器(或代理服务器)发送请求,此服务器无法理解。”

这显然意味着一个变量不会传递给函数。

我该怎么处理这个问题? 我已经尝试在发送到函数之前将数据类型更改为后端的int(),我已使该字段可见etcetc。没有工作。有趣的是:当我在后端使用“打印”功能并禁用“User.regUser(email,username,password,rank)”时,它们的值显示在控制台中......所以我会假设变量包含我需要传递给函数的信息。

下面是代码:

浏览:

@app.route('/register', methods=['GET', 'POST']) 
def register(): 
    #if request.method == 'POST':encrypt 
    email = request.form['email'] 
    username = request.form['username'] 
    password = generate_password_hash(request.form['pass1']) 
    rank = int(request.form['rank']) 

    print(email, password, username, rank) 
    User.regUser(email, username, password, rank) 

# db.session.add(User(email, username, password, "50")) 
# db.session.commit() 
    return render_template('register.html') 

型号:

from pjctBB.views import db 


class User(db.Model): 

    __tablename__ = "users" 

    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String, nullable=False) 
    username = db.Column(db.String, nullable=False) 
    password = db.Column(db.String, nullable=False) 
    rank = db.Column(db.Integer, nullable=False) 

    def __init__(self, email, username, password, rank): 
     self.email = email 
     self.username = username 
     self.password = password 
     self.rank = rank 

    def regUser(self, email, username, password, rank): 

     db.session.add(User(email, username, password, rank)) 
     db.session.commit() 

感谢一大堆!

+0

也许它无法找到的形式字典的关键。向我们展示'register.html'。 –

+0

请[edit]包含[mcve]。 – davidism

+0

嗨lord63。实际上没有“register.html”模板。我将表单传递给Def register()函数。 – choubix

回答

0

从我收集的内容来看,您试图从表单请求而不先渲染它,这意味着没有任何表单可以从中获取或发布。试试这个:

@app.route('/register', methods=['GET', 'POST']) 
def register(): 
    if request.mthod == 'GET': 
       return render_template('register.html') 

    elif request.method == 'POST': 

       email = request.form['email'] 
       username = request.form['username'] 
       password = generate_password_hash(request.form['pass1']) 
       rank = int(request.form['rank']) 

       print(email, password, username, rank) 
       User.regUser(email, username, password, rank) 

       #db.session.add(User(email, username, password, "50")) 
       #db.session.commit() 
       return render_template('register.html') 

这是假设register.html存在。