2016-08-12 87 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