Hỏi về lỗi trong code python

Chào mọi người, mình đang tập làm 1 cái web bằng Flask và Python. Mình đã setup Db và đây là code để đăng nhập của mình:

@app.route('/login/', methods=["POST","GET"])
def loginpage():
	message=""
	c, conn = connection()
	try:
		if request.method=="GET":
			return render_template("login.html",message=message)
		if request.method=="POST":
			data=c.execute("SELECT * FROM user WHERE username = '%s'"%(request.form['username']) )
			data=c.fetchone()[2]
			
			if data==request.form['password']:
				message = "Success"
				session['loged-in']=True
				session['username']="flag{lol_lel_lul}"
				return render_template("login.html",message=message)
			else :
				message ="Unknown user"
				return render_template("login.html",message=message)
	except Exception as e:
		message=str(e)
		return render_template("login.html", message=message)

Nhưng khi mình test thử thì nó luôn trả về lỗi này 'NoneType' object has no attribute '__getitem__' mình fix nãy giờ nhưng vẫn chưa có gì khả quan hơn
Ai có thể giúp mình được không??

Nó không báo lỗi ở dòng nào hả bạn? Có thể lỗi này xuất hiện do bạn đang cố gắng lấy phần tử từ 1 list/object nhưng function không trả về gì cả (None).

Lỗi có thể nằm ở:

  • c.fetchone()[2] (do kết quả trả về là None thì không lấy index=2 được).
  • session không có các keys: 'loged-in', 'username'.

Mình chỉ đoán thế thôi, có sai thì mình không nhận gạch đá đâu :joy:

1 Like

có thể phần session['loged-in'] của mình bị sai,phải là logged_in mới đúng :smile: để mình coi lại xem sao :smile:

Mình khá ngạc nhiên vì mình làm theo tut trên youtube họ chạy bình thường còn mình thì có lỗi này :v:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?