• 接收表单数据


    如果您尝试按下提交按钮,浏览器将显示“Method Not Allowed”错误。这是因为到目前为止,前一节中的登录视图函数完成了一半的工作。它可以在网页上显示表单,但是还没有逻辑来处理用户提交的数据。这是Flask-WTF使工作变得非常简单的另一个领域。下面是view函数的更新版本,它接受并验证用户提交的数据:

    app/routes.py:

    1. from flask import render_template, flash, redirect
    2. @app.route('/login', methods=['GET', 'POST'])
    3. def login():
    4. form = LoginForm()
    5. if form.validate_on_submit():
    6. flash('Login requested for user {}, remember_me={}'.format(
    7. form.username.data, form.remember_me.data))
    8. return redirect('/index')
    9. return render_template('login.html', title='Sign In', form=form)

    当你调用flash()函数时,Flask会存储消息,但是闪现的消息不会神奇地出现在网页中。应用程序的模板需要以适用于站点布局的方式呈现这些闪烁的消息。我将把这些消息添加到基本模板中,以便所有模板都继承此功能。这是更新后的基本模板:

    app/templates/base.html

    1. <html>
    2. <head>
    3. {% if title %}
    4. <title>{{ title }} - microblog</title>
    5. {% else %}
    6. <title>microblog</title>
    7. {% endif %}
    8. </head>
    9. <body>
    10. <div>
    11. Microblog:
    12. <a href="/index">Home</a>
    13. <a href="/login">Login</a>
    14. </div>
    15. <hr>
    16. {% with messages = get_flashed_messages() %}
    17. {% if messages %}
    18. <ul>
    19. {% for message in messages %}
    20. <li>{{ message }}</li>
    21. {% endfor %}
    22. </ul>
    23. {% endif %}
    24. {% endwith %}
    25. {% block content %}{% endblock %}
    26. </body>
    27. </html>

    以下是在用户名和密码字段中添加了字段验证消息的登录模板:

    app/templates/login.html

    1. {% extends "base.html" %}
    2. {% block content %}
    3. <h1>Sign In</h1>
    4. <form action="" method="post" novalidate>
    5. {{ form.hidden_tag() }}
    6. <p>
    7. {{ form.username.label }}<br>
    8. {{ form.username(size=32) }}<br>
    9. {% for error in form.username.errors %}
    10. <span style="color: red;">[{{ error }}]</span>
    11. {% endfor %}
    12. </p>
    13. <p>
    14. {{ form.password.label }}<br>
    15. {{ form.password(size=32) }}<br>
    16. {% for error in form.password.errors %}
    17. <span style="color: red;">[{{ error }}]</span>
    18. {% endfor %}
    19. </p>
    20. <p>{{ form.remember_me() }} {{ form.remember_me.label }}</p>
    21. <p>{{ form.submit() }}</p>
    22. </form>
    23. {% endblock %}

  • 相关阅读:
    Java/JDK 21正式发布!15个特性一览
    【vue会员管理系统】篇五之系统首页布局和导航跳转
    神经网络硕士就业前景,神经网络就业怎么样
    c语言-将字符串转换成整数(类似atoi()函数)
    worthington酶丨worthington酶的化学性质简介
    SpringBoot基于RabbitMQ实现消息可靠性
    「MySQL-02」数据库的操纵、备份、还原和编码规则
    ubuntu安装MySQL
    《暴走IT》第5话:“裸泳”的办公软件
    Python4
  • 原文地址:https://blog.csdn.net/m0_72676510/article/details/134297626