为了账号安全,请及时绑定邮箱和手机立即绑定

Flask 表单仅返回 FALSE 的问题

Flask 表单仅返回 FALSE 的问题

潇湘沐 2021-10-19 15:19:00
为我对这个问题的无知表示歉意。我刚刚接触了使用 Python 和 Flask 的 Web Dev。我正在尝试创建一个应用程序,该应用程序将从输入字段中获取字符串并将其转换为哈希值并将其显示在输出页面上。但是,我不确定我的表单是否设置正确。当我运行应用程序时,它只返回一个假值,并显示即使我输入随机字符串,用户也没有输入任何内容。应用程序from flask import Flask, render_template, request, url_for, flash, redirectfrom message import MessageForm, validators, ValidationErrorfrom cryptography.fernet import Fernetapp = Flask(__name__)app.secret_key = 'development'key = Fernet.generate_key()f = Fernet(key)@app.route('/', methods=['GET', 'POST'])def home():    form = MessageForm(request.form)if request.method == 'POST' and form.validate_on_submit():    user_message = form.message_field.data    e = user_message.encode(encoding='UTF-8')    token = f.encrypt(e)    output = bytes.decode(token)    return redirect('output.html', output=output)return render_template('index.html', form=form)if __name__ == ('__main__'):    app.run(debug=True)消息.pyfrom wtforms import StringField, SubmitField, validatorsfrom flask_wtf import FlaskFormfrom wtforms.validators import DataRequired, ValidationErrorclass MessageForm(FlaskForm):    message_field = StringField('Please enter the message you would like to     encrypt:', [validators.Required('Please enter a message!')])    submit = SubmitField('Submit')HTML 表单{% extends 'layout.html' %}{% block body %}{{ form.csrf_token }}<br /><form action="/" method="POST">    <div class="form-group">        <label style="font-weight: bold;">{{ form.message_field.label }}</label>        <input type="text" class="form-control" name="message" id="message">        <br />        <button type="submit" class="btn btn-primary btn-lg btn-block">Encrypt Message</button>    </div></form>{% for message in form.message_field.errors %}    <div class="alert alert-danger" role="alert">        {{ message }}    </div>{% endfor %}   {% endblock %}我想要的是,如果没有输入任何内容,则让应用程序返回错误,但如果输入内容,则正确运行应用程序。我希望这是有道理的,如前所述,请原谅我的无知。非常感激你的帮助。
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

在 HTML 表单中,尝试将 csrf_token 放在表单声明之后,如下所示:


<br />

<form action="/" method="POST">

    {{ form.csrf_token }}

    <div class="form-group">

        <label style="font-weight: bold;">{{ form.message_field.label }}</label>

        <input type="text" class="form-control" name="message" id="message">

        <br />

        <button type="submit" class="btn btn-primary btn-lg btn-block">Encrypt Message</button>

    </div>

</form>


查看完整回答
反对 回复 2021-10-19
?
绝地无双

TA贡献1946条经验 获得超4个赞

也许你可以试试:

user_message = request.form.get("message")

代替

user_message = form.message_field.data


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号