2015-02-04 3 views
0

Я хочу, чтобы хранить идентификатор пользователя в сеансе и думал, что это будет так просто, как это сделать:Python - Проблема с колбой и сессии

session['login_id'] = data[0] 

Но когда я бегу мой питон скрипт я получаю следующее сообщение об ошибке :

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") 

ГЗС ошибка ниже.

File "render_template.py", line 29, in signin session['login_id'] = int(data[0]) TypeError: 'NoneType' object has no attribute 'getitem'

+0

Является ли ваша переменная 'data' заданной? Похоже, это «Нет». – Fenikso

+1

Можете ли вы также опубликовать функцию/часть кода? – FunkySayu

+0

Мы не можем помочь, кроме указания на то, что переменная 'data' является' None' в этом случае (какое сообщение об ошибке уже сообщает вам). Вам нужно предоставить больше кода, чтобы воспроизвести проблему. –

ответ

0

Вы настроили "secret_key" параметр ? Как вы можете видеть в Quickstart - Flask Documentation, если вы хотите использовать функцию сеанса, необходимо установить секретный ключ.

Надеюсь, это будет полезно.

0

Хорошо, очевидно, noob в python, у меня был неправильный SQL-запрос в целом. Спасибо всем за помощь.

Смежные вопросы