01/10/2018, 09:31

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??

Khoa NTA viết 11:36 ngày 01/10/2018

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

17XGOD viết 11:43 ngày 01/10/2018

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

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

Bài liên quan
0