我想在会话中存储用户ID,并认为这样做很简单:
session['login_id'] = data[0]
但是当我运行我的python脚本时,我收到以下错误消息:
TypeError: 'NoneType' object has no attribute '__getitem__'
希望有人可以帮助我。感谢。
这是代码
from flask import Flask, render_template, request, redirect, url_for, abort, session
from flaskext.mysql import MySQL
mysql = MySQL()
app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'username'
app.config['MYSQL_DATABASE_PASSWORD'] = 'password'
app.config['MYSQL_DATABASE_DB'] = 'database'
app.config['MYSQL_DATABASE_HOST'] = 'host'
mysql.init_app(app)
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['txt_login']
password = request.form['txt_pass']
cursor = mysql.connect().cursor()
cursor.execute("SELECT * from users where login_name='" + username + "' and password='" + password + "'")
data = cursor.fetchone()
session['login_id'] = int(data[0])
if data is None:
return render_template('authenticate.html', error="Invalid username or password")
else:
return redirect(url_for('home'))
if __name__ == '__main__':
app.secret_key = 'A0Zr98jRT#142DS4#sdfs4'
app.run(host="0.0.0.0")
错误消息如下所示。
文件“render_template.py”,第29行,在登录中 session ['login_id'] = int(data [0]) TypeError:'NoneType'对象没有属性' getitem '
答案 0 :(得分:0)
您是否配置了“secret_key”参数?正如您在Quickstart - Flask Documentation中看到的,如果您想使用会话功能,则需要设置密钥。
希望这会有所帮助。
答案 1 :(得分:0)
显然在python中是一个noob,我完全错误的SQL查询。谢谢大家的帮助。