当前位置: 首页 > news >正文

接收表单数据

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

app/routes.py:

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

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

app/templates/base.html

<html><head>{% if title %}<title>{{ title }} - microblog</title>{% else %}<title>microblog</title>{% endif %}</head><body><div>Microblog:<a href="/index">Home</a><a href="/login">Login</a></div><hr>{% with messages = get_flashed_messages() %}{% if messages %}<ul>{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>{% endif %}{% endwith %}{% block content %}{% endblock %}</body>
</html>

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

app/templates/login.html

{% extends "base.html" %}{% block content %}<h1>Sign In</h1><form action="" method="post" novalidate>{{ form.hidden_tag() }}<p>{{ form.username.label }}<br>{{ form.username(size=32) }}<br>{% for error in form.username.errors %}<span style="color: red;">[{{ error }}]</span>{% endfor %}</p><p>{{ form.password.label }}<br>{{ form.password(size=32) }}<br>{% for error in form.password.errors %}<span style="color: red;">[{{ error }}]</span>{% endfor %}</p><p>{{ form.remember_me() }} {{ form.remember_me.label }}</p><p>{{ form.submit() }}</p></form>
{% endblock %}

http://www.lryc.cn/news/225048.html

相关文章:

  • 串口通信(11)-CRC校验介绍算法
  • 什么是Java虚拟机(JVM),它的作用是什么?
  • 力扣876:链表的中间结点
  • 三菱FX3U系列—原点回归指令
  • ES常用查询命令
  • 【Qt之元对象系统】
  • 基于FPGA的EMAC模块与FIFO模块:高速数据传输与存储
  • 大数据毕业设计选题推荐-农作物观测站综合监控平台-Hadoop-Spark-Hive
  • 高校教务系统登录页面JS分析——长沙理工大学教务系统
  • element-ui的form校验失败
  • java数据结构--阻塞队列
  • 使用p2p实现Linux内网快速分发文件
  • Android Studio报错:connect refused
  • ubuntu 源码编译安装make过程很慢问题解决
  • 深度学习 opencv python 实现中国交通标志识别 计算机竞赛
  • 希尔排序原理
  • 测试用例的设计方法(全):判定表驱动分析方法
  • node 第十七天 使用rsa非对称加密 实现前后端加密通信 JSEncrypt和node-rsa
  • Spring-依赖注入findAutowireCandidates源码实现
  • 单页面应用与多页面应用的区别?
  • 模型预处理的ToTensor和Normalize
  • nodejs express multer 保存文件名为中文时乱码,问题解决 originalname
  • 大数据之LibrA数据库系统告警处理(ALM-12035 恢复任务失败后数据状态未知)
  • 汽车生产RFID智能制造设计解决方案与思路
  • 讲解机器学习中的 K-均值聚类算法及其优缺点。
  • 开源DB-GPT实现连接数据库详细步骤
  • java学习part01
  • 渗透测试学习day3
  • 【Proteus仿真】【Arduino单片机】数码管显示
  • 【Bug】Python利用matplotlib绘图无法显示中文解决办法