目錄
燒瓶擴展
>語句。
首頁 後端開發 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教學
    1658
    14
    CakePHP 教程
    1415
    52
    Laravel 教程
    1309
    25
    PHP教程
    1257
    29
    C# 教程
    1231
    24
    Python vs.C:申請和用例 Python vs.C:申請和用例 Apr 12, 2025 am 12:01 AM

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

    您可以在2小時內學到多少python? 您可以在2小時內學到多少python? Apr 09, 2025 pm 04:33 PM

    兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的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 11, 2025 am 12:04 AM

    2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手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