【发布时间】:2021-08-31 21:33:41
【问题描述】:
当我给出提交按钮时,它不会验证它没有输入“POST”请求的 if 和 login_form.validate()。
我尝试学习,但我已经尝试解决这个问题 5 小时,我不再知道该怎么做。
@app.route('/login', methods = ['GET','POST'])
def login():
login_form = forms.logger(request.form)
title = 'Gamework'
#imprimira los datos en la consola si el metodos es post y los datos son validos
if request.method == 'POST' and login_form.validate():
print('Hola mundo')
email = login_form.email.data
password = login_form.password.data
user = User.query.filter_by(email = email).first()
if user is not None and user.verify_password(password):
print('test 2')
succes_menssage = 'Se ha iniciado correctamente {}'.format(email)
flash(succes_menssage)
session['Email'] = email
return redirect( url_for('index') )
return render_template('logger_user.html', title = title, form = login_form)
这里我显示Models.py。当我进入登录函数验证post请求和表单验证时,它只向我发送JSON并且什么都不做,它只是停留在同一个目录而不是去。
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash
from werkzeug.security import check_password_hash
import datetime
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String(20), unique = True)
email = db.Column(db.String(40))
password = db.Column(db.String(256))
create_date = db.Column(db.DateTime, default = datetime.datetime.now)
def __init__(self, username, email, password):
self.username = username
self.email = email
self.password = self.__create_password(password)
def __create_password(self, password):
return generate_password_hash(password)
def verify_password(self, password):
r = check_password_hash(self.password, password)
print(r)
return r
可能是什么?这是页面:
【问题讨论】:
-
如果你不能让它满足
if子句的条件,要么它不是一个POST请求,要么表单没有验证,所以你需要检查哪个条件(s ) 失败。 即,要么在你的 IDE 中使用调试器来查看request和login_form对象的状态,要么使用战略性的print调用来执行此操作; 例如,print(str(login_form))
标签: flask flask-wtforms flask-login