【问题标题】:Python - Issue with Flask and sessionPython - 烧瓶和会话问题
【发布时间】:2015-02-04 09:28:36
【问题描述】:

我想在会话中存储一个用户 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

【问题讨论】:

  • 您的data 变量设置了吗?好像是None
  • 能否也贴出功能/部分代码?
  • 除了指出在这种情况下data 变量是None(错误消息已经告诉您)之外,我们无能为力。您需要提供更多代码让我们重现问题。
  • 你必须给代码你如何传递或初始化data变量。
  • data 绑定到 None。这与 Flask 无关;表达式的右手边抛出异常。

标签: python flask


【解决方案1】:

您是否配置了“secret_key” 参数?正如您在Quickstart - Flask Documentation 中看到的,如果您想使用会话功能,则需要设置一个密钥。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    好吧,显然是 python 中的菜鸟,我的 SQL 查询完全错误。感谢大家尝试提供帮助。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2015-06-21
      • 2020-07-02
      • 2015-12-30
      • 1970-01-01
      相关资源
      最近更新 更多