我想将数据从表单移至sqlite3:
@app.route('/')
@app.route('/reg/')
@app.route('/reg', methods='POST')
def registration():
conn = sqlite3.connect('trainsdb2.db')
c=conn.cursor()
name = request.forms.get('name', default=False)
#surname = request.forms.get('surname', default=False)
#mail = request.forms.get('mail', default=False)
#adress = request.forms.get('adress', default=False)
#login_def = request.forms.get('login_defined', default=False)
#password_def = request.forms.get('password_defined', default=False)
c.execute('INSERT INTO LoginData (id,login,password) VALUES("%s","%s","%s")'%(random.randint(1,1000),name,'b'))
conn.commit()
conn.close()
return template('index')
我的sqlite3表创建如下:
CREATE TABLE LoginData (id int AUTO_INCREMENT NOT NULL, login varchar NOT NULL, password varchar NOT NULL, "loggedin" integer NOT NULL DEFAULT '0', "randStri" varchar, PRIMARY KEY(id))
我的表单如下:
<form action="/reg" method="post">
<table><tr>
<td><b>Name: </b></td><td><input name="name" type="text"></td></tr>
<tr><td><b>Surname: </b></td><td><input name="surname" type="text"></td></tr>
<tr><td><b>Email: </b></td><td><input name="mail" type="text"></td></tr>
<tr><td><b>Adress: </b></td><td><input name="adress" type="text"></td></tr>
<tr><td><b>Login: </b></td><td><input name="login_defined" type="text"></td></tr>
<tr><td><b>Password: </b></td><td><input name="password_defined" type="password"></td></tr>
<tr><td><b><input value="Register!" type="submit"></b></td><td></td></tr>
</table>
</form>
当我将数据放入数据库的“登录”字段中的html表单中时,无论我放置在此html表单中的内容如何,我总是具有“ False ”。是什么原因呢?
我认为我没有违反对数据库施加的任何约束。
编辑:将默认值更改为:forms.get('name', default="Missing 'name' in forms.")
后,我看不到正在传递任何值,但问题是为什么会发生?
EDIT2 :我也有登录页面以及以下代码,该部分可以毫不犹豫地工作:
@app.route('/login')
@app.route('/login/')
@app.route('/login', method='POST')
def login():
conn = sqlite3.connect('trainsdb2.db')
c = conn.cursor()
loginName = request.forms.get('login_name', default=False)
password = request.forms.get('password', default=False)
c.execute('SELECT * FROM LoginData WHERE login="%s" AND password="%s"' %(loginName,password))
if c.fetchone() is not None:
response.set_cookie("user", loginName, secret=secretKey)
log.info = ('not none')
conn.commit()
conn.close()
redirect('/index')
return True
else:
conn.commit()
conn.close()
return template('login')
conn.commit()
conn.close()
return template('login')
有什么想法吗?答案?