2016-08-12 83 views
-6

当我访问我的python烧瓶网站并转到myurl.com/newuser时,我得到必要的html页面返回。这个页面有一个提交按钮,它应该按下时将信息传递给服务器。但是当它被按下时,它会将我重定向到网站的'索引'方法,并且信息不会传递到数据库?我不明白这一点,这里是我的代码:(SQL信息错过了明显)非常奇怪的python烧瓶行为

from flask import Flask, redirect, render_template, request, url_for 
from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config["DEBUG"] = True 
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="", 
    password="", 
    hostname="", 
    databasename="", 
) 
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI 
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299 
db = SQLAlchemy(app) 

class Users(db.Model): 
    __tablename__ = "userstable" 

    userid = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String(4096)) 
    password = db.Column(db.String(4096)) 

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

@app.route("/newuser", methods=["GET", "POST"]) 
def NewUser(): 
    if request.method == "GET": 
     return render_template("NewUser.html") 
    usernameSet = Users(username=request.form["Username"]) 
    passwordSet = Users(password=request.form["Password"]) 
    db.session.add(usernameSet) 
    db.session.add(passwordSet) 
    db.session.commit() 
    return redirect(url_for('NewUser')) 

NEWUSER模板:

<html> 
<body> 
    <form action="." method="POST"> 
     <input type="text" value="" name="Username"> 
     <input type="text" value="" name="Password"> 
     <input type="submit" value="Submit"> 
    </form> 
</body>  
</html> 
+0

如果没有'NewUser.html'模板,我们无法开始调试。请把它做成[mcve];只是代码的一部分和模板一起再现问题。 –

+0

你为什么要创建**两个**用户?一个用户被授予用户名,另一个用户被授予密码。 –

+0

哦哎呀我该如何解决这个问题? – bob

回答

0

像马亭说,改变

usernameSet = Users(username=request.form["Username"]) 
    passwordSet = Users(password=request.form["Password"]) 
    db.session.add(usernameSet) 
    db.session.add(passwordSet) 

user = Users(username=request.form["Username"], password=request.form["Password"]) 
    db.session.add(user) 

但真正的问题可能与您的HTML表单一起,您必须添加表单操作以包含接收URL。

<form action="/newuser" method="POST"> 
+0

为了更强大的用户管理,您应该使用一些推荐的Flask扩展,如[Flask-Login](https://flask-login.readthedocs.io/en/latest/)或[Flask-Security](https:/ /pythonhosted.org/Flask-Security/) – hooligan