目录
烧瓶扩展
>语句。
首页 后端开发 Python教程 烧瓶的简介:添加联系页面

烧瓶的简介:添加联系页面

Feb 28, 2025 am 10:03 AM

在这个迷你系列的上一篇文章中,我们使用Blask构建了一个简单的网站,其中包含“主页”和“关于”页面,使用广义工作流,我们可以将其应用于其他基于烧瓶的Web应用程序。在本课程中,我将演示如何添加一个允许用户向您发送消息的联系页面。

>本文中使用的代码可以在GitHub上找到。 


烧瓶扩展

烧瓶没有架子上的许多功能,因此很容易拿起并学习。没有用于添加和更新内容的数据库交互或管理员接口的对象相关映射器。它仅提供一小部分功能,其中两个功能已经使用了 - render_template()

而不是使用额外功能运输,烧瓶的扩展模型允许您根据需要添加功能。烧瓶扩展名是一个软件包,可在您的应用中添加特定功能。例如,Blask-sqlalchemy向您的应用增加了数据库支持,而Blask-Login则添加了登录/注销支持。 You can find a full list of extensions in the Flask Extension Registry.


To create a contact page, we'll use Flask-WTF to handle and validate form data and Flask-Mail to email the form data to you.

Flask-WTF

flask-wtf diagramFlask-WTF is an extension that handles and validates form data.这意味着什么?查看以下图:
  1. >用户向包含表格的网页发布get请求。
  2. >
  3. >用户填写表单。>
  4. >
  5. >
  6. >

按钮,通过post request >>如果所有字段验证,则在管道中的下一步中使用表单信息。

>

>一个联系页面将为用户的名称,电子邮件,主题和消息提供字段。在烧瓶中,我们将将表单张贴到routes.py 内部的功能中。此功能称为表单处理程序。我们将运行一些验证检查,如果任何输入没有通过Muster,我们将刷新页面以显示描述错误的消息。一旦所有验证检查通过,我们将使用表单数据进行下一步:将消息发送给您,网站所有者。 这是表单处理和验证的工作方式。现在我们实际定义表格的位置?我们可以使用python脚本的动作属性编写HTML。 Python脚本将镜像表单以捕获每个表单字段并验证表单字段数据。但是,如果我们使用此策略,我们实际上将两次定义表格 - 前端和后端一次。

>只能在Python脚本中定义一次形式将是很棒的。这正是玻璃WTF允许我们做的事情。我们将仅在Python脚本中定义一次表单,然后让Flask-WTF为我们生成表格的HTML。所有这一切的目的是将呈现与内容分开。

>足够的chat不休。让我们代码。

>创建一个表单

作为第一步,让我们回到上次创建的孤立开发环境中。

>

$ cd flaskapp<br>$ . bin/activate<br>
登录后复制
登录后复制
登录后复制
登录后复制
>

pip install -U Flask-WTF<br>
登录后复制
登录后复制

现在,我们已经输入并激活了开发环境,我们可以安全地安装flask-wtf:

routes.py

,它映射到函数。让我们不要用无关的代码混乱。相反,创建一个名为
from flask_wtf import FlaskForm<br>from wtforms import StringField, TextAreaField, SubmitField<br><br><br><br>class ContactForm(FlaskForm):<br>  name = StringField("Name")<br>  email = StringField("Email")<br>  subject = StringField("Subject")<br>  message = TextAreaField("Message")<br>  submit = SubmitField("Send") <br>
登录后复制
登录后复制
forms.py

的新文件,然后将其放在app/文件夹中。

app/forms.pys.py

from flask import Flask, render_template<br>from forms import ContactForm<br>
登录后复制
登录后复制

我们刚刚创建了一个表单。我们做了什么?首先,我们从Blask-wtf Contactform导入了几个有用的类脚本。

app/utaes.py

接下来,配置flask-wtf来处理称为跨站点请求伪造(CSRF)的安全性利用(CSRF)。在一个完美的世界中,您的服务器仅处理属于您的Web应用程序的表单。换句话说,您的服务器只能处理和验证您创建的表单。但是,攻击者有可能在自己的网站上创建表单,填写恶意信息,然后将其提交给您的服务器。如果您的服务器接受这些恶意信息,那么接下来可能会发生各种坏事。

您可以通过确保表单提交源自您的Web应用程序来防止CSRF攻击。做到这一点的一种方法是将隐藏在您的HTML /Contact的独特令牌,函数contact()>中,我们首先在第三行中创建一个新的触点表单的新实例,并将其发送到第四行中的名为contact.html的网络模板。不过,我们将很快创建此Web模板。>我们仍然有一些工作要做。上图显示,如果将Get请求发送到服务器,则应将包含表单的网页检索并加载到浏览器中。如果服务器收到发布请求,则函数应捕获表单字段数据并检查是否有效。用python的术语,可以在上一篇文章中向render_template()的if ... else逻辑表示此逻辑,因此在这里我们导入了更多烧瓶类,名为request>确定当前的http方法是get还是帖子。接下来是contact()函数(第9-13行)。在邮政请求的情况下,一个字符串指示已发布表格。

此字符串是临时占位符,我们将在本文的最后一步中用真实代码替换。否则,如果请求使用get,我们将返回包含表单的Web模板contact.html。文件夹。

app/app/templates/contact.html

>与 home.html
$ cd flaskapp<br>$ . bin/activate<br>
登录后复制
登录后复制
登录后复制
登录后复制
和> html它自己的文字。我们首先通过将操作属性设置为 /联系人映射到函数contact()>执行,其中命名为contactform> class将映射到函数contact()类别,将表格映射到web template contact.html。 html。渲染的html被发送回到。。
  • routes.py> button。>
  • >通过使用Form Validators执行表单验证。幸运的是,Blask-WTF配备了许多有用的内置验证器,我们可以立即使用。我们将将这些验证器从[validators = datarequired()]
  • 的datarequired 内置验证器放入每个表单字段以验证其存在。 Notice that this validator is inside a Python list, meaning that we can easily add more validators to this list.
  • Next, let's require email addresses to match the pattern Email()
  • validator requires the email_validator package to be installed, so install it with pip as follows:
  • Update
  • app/forms.py as以下内容:
  • >用于我们的表单验证。
  • 闪烁的错误消息
  • 回顾原始图,如果任何验证检查失败,则联系页面应使用错误消息重新填充,以便用户可以解决错误并重试。此错误消息仅在验证失败时才出现并在确定错误时消失。>我们的下一步是在验证失败时向用户发送此类临时错误消息。烧瓶通过在脚本开头的flash()

    函数。

    $ cd flaskapp<br>$ . bin/activate<br>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    >

    > 在到服务器的联系表帖子后,任何验证失败都应通过有用的错误消息重新加载表单。否则,输入数据可用于将来处理。再一次,可以在if ... else逻辑中表达此逻辑。发布的错误消息表格

    ,表明该表格已成功提交。

    接下来,让我们修改contact.html

    ,以便它可以接收并显示这些临时错误消息。请参阅以下块:
    pip install -U Flask-WTF<br>
    登录后复制
    登录后复制

    >循环的函数。将此代码块添加到

    contact.html

    之后&lt; form&gt;tag。 Pretty。

    from flask_wtf import FlaskForm<br>from wtforms import StringField, TextAreaField, SubmitField<br><br><br><br>class ContactForm(FlaskForm):<br>  name = StringField("Name")<br>  email = StringField("Email")<br>  subject = StringField("Subject")<br>  message = TextAreaField("Message")<br>  submit = SubmitField("Send") <br>
    登录后复制
    登录后复制

    main.css

    打开浏览器并访问http:// localhost:5000/contact。将所有字段留为空白,然后单击

    发送以测试表单验证和错误消息闪烁工作。

    from flask import Flask, render_template<br>from forms import ContactForm<br>
    登录后复制
    登录后复制
    这很甜蜜!如果验证检查失败,我们已成功将错误消息发送给我们的联系表。实际上,我们可以做得更好。与其为所有失败的验证检查提供一个通用错误消息,不如为每个失败的验证检查提供一个特定的错误消息。例如,如果用户忘记填写主题字段,则一条特定的错误消息,请输入您的姓名

    。我们可以很容易地完成此操作,因此让我们首先在每个验证器中写下我们的特定错误消息。接下来,让我们修改contact.html以接收并显示这些特定的错误消息。前面,我们依赖于每个表单字段的函数错误

    属性来拉出特定的错误消息,并使用jinja2 messages

    和message> class在它们上循环循环,以构成一个新的电子邮件,并包含包含app.config的app.config的app.config [aim_usern appername flost的邮件

    变量,我们可以17)。
    {% extends "layout.html" %}<br>{% block content %}<br><br>  <h2>Contact</h2><br>  <br>  <form action="{{ url_for('contact') }}" method=post><br>    {{ form.hidden_tag() }}<br>    {{ form.name.label }}<br>    {{ form.name }}<br>    {{ form.email.label }}<br>    {{ form.email }}<br>    {{ form.subject.label }}<br>    {{ form.subject }}<br>    {{ form.message.label }}<br>    {{ form.message }}<br>    {{ form.submit }}<br>  </form><br>{% endblock %}<br>
    登录后复制

    >您可能已经看到小组使用联系电子邮件地址,例如support@example.com。如果您拥有自己的域并可以创建一个新的联系电子邮件地址,请继续并将该电子邮件地址放在请求中。我们已经在form.validate()中添加了逻辑。因此,让我们继续前进,在消息类中添加逻辑,将主题行,“来自”地址和“到”地址。然后,我们使用app.config [“ mail_username”]收集联系表的主题字段数据,因此这就是我们在这里使用的内容。该电子邮件将发送到您的个人电子邮件地址,以便您可以接收并响应新消息。接下来,我们将编写电子邮件本身(第11-14行)。我们包括用户的姓名,电子邮件和消息。我使用Python的字符串格式化运算符邮件。SEND(MSG)

    发送电子邮件(第15行)。

    让我们看看一切是否有效。访问http:// localhost:5000/联系人,填写每个字段,然后单击“发送”。如果一切顺利,您将收到来自烧瓶应用程序的新电子邮件。

    >整理

    >

    >我们的倒数第二步是删除临时占位符字符串,如果... else

    >语句。

    > 在成功提交的触点表格中,我们会从

    py

    froce中发送成功标志。 contact.html

    >我们将放置true ,我们将显示感谢消息。否则,我们将显示联系表。 %}

    表示,如果我们从 routes.py

    发送的成功标志设置为&lt; p&gt;谢谢您的消息。我们很快就会与您联系。否则,请按照&lt; header&gt; 元素遵循if ... else 语句。让我们在联系页面(第8行)。文章,我们在烧瓶应用程序中添加了一个包含表格的联系页面。表格出现在Web应用程序中的几个地方,最著名的是在注册和登录期间。可以适应此工作流程以满足这些需求。在创建联系页面时,我们学会了如何使用烧瓶扩展。

    $ cd flaskapp<br>$ . bin/activate<br>
    登录后复制
    登录后复制
    登录后复制
    登录后复制

    烧瓶扩展是简单,功能强大的工具,可扩展基于烧瓶的应用的功能。>>

    >查看烧瓶扩展注册表,以探索您可以集成到应用程序中的更多扩展名。

  • 以上是烧瓶的简介:添加联系页面的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    热门话题

    Java教程
    1662
    14
    CakePHP 教程
    1419
    52
    Laravel 教程
    1311
    25
    PHP教程
    1262
    29
    C# 教程
    1234
    24
    Python vs.C:申请和用例 Python vs.C:申请和用例 Apr 12, 2025 am 12:01 AM

    Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

    2小时的Python计划:一种现实的方法 2小时的Python计划:一种现实的方法 Apr 11, 2025 am 12:04 AM

    2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

    Python:游戏,Guis等 Python:游戏,Guis等 Apr 13, 2025 am 12:14 AM

    Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

    您可以在2小时内学到多少python? 您可以在2小时内学到多少python? Apr 09, 2025 pm 04:33 PM

    两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

    Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

    Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

    Python和时间:充分利用您的学习时间 Python和时间:充分利用您的学习时间 Apr 14, 2025 am 12:02 AM

    要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

    Python:探索其主要应用程序 Python:探索其主要应用程序 Apr 10, 2025 am 09:41 AM

    Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

    Python:自动化,脚本和任务管理 Python:自动化,脚本和任务管理 Apr 16, 2025 am 12:14 AM

    Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

    See all articles