我正在使用 Flask 进行项目,我想在用户登录时创建一个会话。我按照文档进行操作,但我的脚本不起作用并在打开后直接关闭。所以,无法在我的浏览器中启动我的项目。
我的代码如下:
#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import Flask, url_for, request, session
import mysql.connector
app = Flask(__name__)
@app.route('/connexion/', methods=['GET', 'POST'])
def connexion():
if request.method == 'POST':
if request.form['mail'] == "":
return affichage_form_mail(erreur = "001")
else:
cnx = mysql.connector.connect(user='admin', password='mysql', host='localhost', database='colocation')
cursor = cnx.cursor()
query = ("SELECT COUNT('email'), password FROM user WHERE email = '" + request.form['mail'] + "'")
cursor.execute(query)
i = cursor.fetchone()
if str(i[0]) != "1":
# on regarde le nombre d'enregistrements. Si diff de 0, on réaffiche le formulaire avec un code d'erreur 001
return affichage_form_mail(erreur = "001")
else:
# on vérifie le mdp
if request.form['password'] != str(i[1]):
# mot de passe faux, on reaffiche form_login avec en argument l'erreur et le mail
return affichage_form_mail(request.form['mail'], "002")
else:
# l'user est connecté. On le redirige vers son compte et on met une variable dans la session
session['connect'] = True
cursor.close()
cnx.close()
else:
return affichage_form_mail()
def affichage_form_mail(mail='Adresse email', erreur='none'):
aff_erreur = ""
if erreur == "001" :
aff_erreur = "Email inexistant"
if erreur == "002" :
aff_erreur = "Mot de passe inccorect"
if erreur == "003" :
aff_erreur = "Il faut indiquer email"
return aff_erreur + '<form action="" method="post"><input type="text" name="mail" value= "' + mail + '" /><input type="text" name="password" /><input type="submit" value="Envoyer" /></form>'
if __name__ == '__main__':
app.secret_key = "dd"
app.run(debug=True)
我知道我的密钥不是那么安全,但这不是重点。请注意,我尝试不使用密钥(不要问为什么......),我可以在 Chrome 中打开我的项目,但我当然有一条错误消息,告诉我必须输入密钥。
我希望你能帮助我......我检查了官方文档并复制粘贴以确保避免任何错误,但它仍然无法正常工作。