国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
燒瓶擴展
>語句。
首頁 後端開發(fā) Python教學 燒瓶的簡介:添加聯(lián)繫頁面

燒瓶的簡介:添加聯(lián)繫頁面

Feb 28, 2025 am 10:03 AM

在這個迷你係列的上一篇文章中,我們使用Blask構建了一個簡單的網(wǎng)站,其中包含“主頁”和“關於”頁面,使用廣義工作流,我們可以將其應用於其他基於燒瓶的Web應用程序。在本課程中,我將演示如何添加一個允許用戶向您發(fā)送消息的聯(lián)繫頁面。

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


燒瓶擴展

燒瓶沒有架子上的許多功能,因此很容易拿起並學習。沒有用於添加和更新內(nèi)容的數(shù)據(jù)庫交互或管理員接口的對象相關映射器。它僅提供一小部分功能,其中兩個功能已經(jīng)使用了 - render_template()

。

而不是使用額外功能運輸,燒瓶的擴展模型允許您根據(jù)需要添加功能。燒瓶擴展名是一個軟件包,可在您的應用中添加特定功能。例如,Blask-sqlalchemy向您的應用增加了數(shù)據(jù)庫支持,而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. >用戶向包含表格的網(wǎng)頁發(fā)布get請求。
  2. >
  3. >用戶填寫表單。 >
  4. >
  5. >
  6. >

按鈕,通過post request >>如果所有字段驗證,則在管道中的下一步中使用表單信息。

>

>一個聯(lián)繫頁面將為用戶的名稱,電子郵件,主題和消息提供字段。在燒瓶中,我們將將表單張貼到routes.py 內(nèi)部的功能中。此功能稱為表單處理程序。我們將運行一些驗證檢查,如果任何輸入沒有通過Muster,我們將刷新頁面以顯示描述錯誤的消息。一旦所有驗證檢查通過,我們將使用表單數(shù)據(jù)進行下一步:將消息發(fā)送給您,網(wǎng)站所有者。 這是表單處理和驗證的工作方式?,F(xiàn)在我們實際定義表格的位置?我們可以使用python腳本的動作屬性編寫HTML。 Python腳本將鏡像表單以捕獲每個表單字段並驗證表單字段數(shù)據(jù)。但是,如果我們使用此策略,我們實際上將兩次定義表格 - 前端和後端一次。 。

>只能在Python腳本中定義一次形式將是很棒的。這正是玻璃WTF允許我們做的事情。我們將僅在Python腳本中定義一次表單,然後讓Flask-WTF為我們生成表格的HTML。所有這一切的目的是將呈現(xiàn)與內(nèi)容分開。

>足夠的chat不休。讓我們代碼。

>創(chuàng)建一個表單

作為第一步,讓我們回到上次創(chuàng)建的孤立開發(fā)環(huán)境中。

>

$ cd flaskapp<br>$ . bin/activate<br>
>

pip install -U Flask-WTF<br>

現(xiàn)在,我們已經(jīng)輸入並激活了開發(fā)環(huán)境,我們可以安全地安裝flask-wtf:

routes.py

,它映射到函數(shù)。讓我們不要用無關的代碼混亂。相反,創(chuàng)建一個名為
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>

我們剛剛創(chuàng)建了一個表單。我們做了什麼?首先,我們從Blask-wtf Contactform導入了一些有用的類腳本。

app/utaes.py

接下來,配置flask-wtf來處理稱為跨站點請求偽造(CSRF)的安全性利用(CSRF)。在一個完美的世界中,您的服務器僅處理屬於您的Web應用程序的表單。換句話說,您的服務器只能處理和驗證您創(chuàng)建的表單。但是,攻擊者有可能在自己的網(wǎng)站上創(chuàng)建表單,填寫惡意信息,然後將其提交給您的服務器。如果您的服務器接受這些惡意信息,那麼接下來可能會發(fā)生各種壞事。

您可以通過確保表單提交源自您的Web應用程序來防止CSRF攻擊。做到這一點的一種方法是將隱藏在您的HTML /Contact的獨特令牌,函數(shù)contact()>中,我們首先在第三行中創(chuàng)建一個新的觸點表單的新實例,並將其發(fā)送到第四行中的名為contact.html的網(wǎng)絡模板。不過,我們將很快創(chuàng)建此Web模板。 >我們?nèi)匀挥幸恍┕ぷ饕觥I蠄D顯示,如果將Get請求發(fā)送到服務器,則應將包含表單的網(wǎng)頁檢索並加載到瀏覽器中。如果服務器收到發(fā)布請求,則函數(shù)應捕獲表單字段數(shù)據(jù)並檢查是否有效。用python的術語,可以在上一篇文章中向render_template()的if ... else邏輯表示此邏輯,因此在這裡我們導入了更多燒瓶類,名為request>確定當前的http方法是get還是帖子。接下來是contact()函數(shù)(第9-13行)。 在郵政請求的情況下,一個字符串指示已發(fā)布表格。

此字符串是臨時佔位符,我們將在本文的最後一步中用真實代碼替換。否則,如果請求使用get,我們將返回包含表單的Web模板contact.html。文件夾。

app/app/templates/contact.html

>與 home.html
$ cd flaskapp<br>$ . bin/activate<br>
和> html它自己的文字。我們首先通過將操作屬性設置為 /聯(lián)繫人映射到函數(shù)contact()>執(zhí)行,其中命名為contactform> class將映射到函數(shù)contact()類別,將表格映射到web template contact.html。 html。 渲染的html被發(fā)送回到。 。
  • routes.py> button。 >
  • >通過使用Form Validators執(zhí)行表單驗證。幸運的是,Blask-WTF配備了許多有用的內(nèi)置驗證器,我們可以立即使用。我們將將這些驗證器從[validators = datarequired()]
  • 的datarequired 內(nèi)置驗證器放入每個表單字段以驗證其存在。 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以下內(nèi)容:
  • >用於我們的表單驗證。
  • 閃爍的錯誤消息
  • 回顧原始圖,如果任何驗證檢查失敗,則聯(lián)繫頁面應使用錯誤消息重新填充,以便用戶可以解決錯誤並重試。此錯誤消息僅在驗證失敗時才出現(xiàn)並在確定錯誤時消失。 >我們的下一步是在驗證失敗時向用戶發(fā)送此類臨時錯誤消息。燒瓶通過在腳本開頭的flash()

    函數(shù)。

    $ cd flaskapp<br>$ . bin/activate<br>
    >

    > 在到服務器的聯(lián)繫表帖子後,任何驗證失敗都應通過有用的錯誤消息重新加載表單。否則,輸入數(shù)據(jù)可用於將來處理。再一次,可以在if ... else邏輯中表達此邏輯。發(fā)布的錯誤消息表格

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

    接下來,讓我們修改contact.html

    ,以便它可以接收並顯示這些臨時錯誤消息。請參閱以下塊:
    pip install -U Flask-WTF<br>

    >循環(huán)的函數(shù)。將此代碼塊添加到

    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。將所有字段留為空白,然後單擊

    發(fā)送以測試表單驗證和錯誤消息閃爍工作。

    from flask import Flask, render_template<br>from forms import ContactForm<br>
    這很甜蜜!如果驗證檢查失敗,我們已成功將錯誤消息發(fā)送給我們的聯(lián)繫表。實際上,我們可以做得更好。與其為所有失敗的驗證檢查提供一個通用錯誤消息,不如為每個失敗的驗證檢查提供一個特定的錯誤消息。例如,如果用戶忘記填寫主題字段,則一條特定的錯誤消息,請輸入您的姓名

    。我們可以很容易地完成此操作,因此讓我們首先在每個驗證器中寫下我們的特定錯誤消息。接下來,讓我們修改contact.html以接收並顯示這些特定的錯誤消息。前面,我們依賴於每個表單字段的函數(shù)錯誤

    屬性來拉出特定的錯誤消息,並使用jinja2 messages

    和message> class在它們上循環(huán)循環(huán),以構成一個新的電子郵件,並包含包含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>

    >您可能已經(jīng)看到小組使用聯(lián)繫電子郵件地址,例如support@example.com。如果您擁有自己的域並可以創(chuàng)建一個新的聯(lián)繫電子郵件地址,請繼續(xù)並將該電子郵件地址放在請求中。我們已經(jīng)在form.validate()中添加了邏輯。因此,讓我們繼續(xù)前進,在消息類中添加邏輯,將主題行,“來自”地址和“到”地址。然後,我們使用app.config [“ mail_username”]收集聯(lián)繫表的主題字段數(shù)據(jù),因此這就是我們在這裡使用的內(nèi)容。該電子郵件將發(fā)送到您的個人電子郵件地址,以便您可以接收並響應新消息。 接下來,我們將編寫電子郵件本身(第11-14行)。我們包括用戶的姓名,電子郵件和消息。我使用Python的字符串格式化運算符郵件。 SEND(MSG)

    發(fā)送電子郵件(第15行)。

    讓我們看看一切是否有效。訪問http:// localhost:5000/聯(lián)繫人,填寫每個字段,然後單擊“發(fā)送”。如果一切順利,您將收到來自燒瓶應用程序的新電子郵件。

    >整理

    >

    >我們的倒數(shù)第二步是刪除臨時佔位符字符串,如果... else

    >語句。

    > 在成功提交的觸點表格中,我們會從

    py

    froce中發(fā)送成功標誌。 contact.html

    。

    >我們將放置true ,我們將顯示感謝消息。否則,我們將顯示聯(lián)繫表。 %}

    表示,如果我們從 routes.py

    發(fā)送的成功標誌設置為&lt; p&gt;謝謝您的消息。我們很快就會與您聯(lián)繫。否則,請按照&lt; header&gt; 元素遵循if ... else 語句。讓我們在聯(lián)繫頁面(第8行)。文章,我們在燒瓶應用程序中添加了一個包含表格的聯(lián)繫頁面。表格出現(xiàn)在Web應用程序中的幾個地方,最著名的是在註冊和登錄期間??梢赃m應此工作流程以滿足這些需求。在創(chuàng)建聯(lián)繫頁面時,我們學會瞭如何使用燒瓶擴展。

    $ cd flaskapp<br>$ . bin/activate<br>

    燒瓶擴展是簡單,功能強大的工具,可擴展基於燒瓶的應用的功能。 >>

    >查看燒瓶擴展註冊表,以探索您可以集成到應用程序中的更多擴展名。

  • 以上是燒瓶的簡介:添加聯(lián)繫頁面的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

    本網(wǎng)站聲明
    本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    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整合開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網(wǎng)頁開發(fā)工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    什麼是動態(tài)編程技術,如何在Python中使用它們? 什麼是動態(tài)編程技術,如何在Python中使用它們? Jun 20, 2025 am 12:57 AM

    動態(tài)規(guī)劃(DP)通過將復雜問題分解為更簡單的子問題並存儲其結果以避免重複計算,來優(yōu)化求解過程。主要方法有兩種:1.自頂向下(記憶化):遞歸分解問題,使用緩存存儲中間結果;2.自底向上(表格化):從基礎情況開始迭代構建解決方案。適用於需要最大/最小值、最優(yōu)解或存在重疊子問題的場景,如斐波那契數(shù)列、背包問題等。在Python中,可通過裝飾器或數(shù)組實現(xiàn),並應注意識別遞推關係、定義基準情況及優(yōu)化空間複雜度。

    如何使用插座在Python中執(zhí)行網(wǎng)絡編程? 如何使用插座在Python中執(zhí)行網(wǎng)絡編程? Jun 20, 2025 am 12:56 AM

    Python的socket模塊是網(wǎng)絡編程的基礎,提供低級網(wǎng)絡通信功能,適用於構建客戶端和服務器應用。要設置基本TCP服務器,需使用socket.socket()創(chuàng)建對象,綁定地址和端口,調(diào)用.listen()監(jiān)聽連接,並通過.accept()接受客戶端連接。構建TCP客戶端需創(chuàng)建socket對像後調(diào)用.connect()連接服務器,再使用.sendall()發(fā)送數(shù)據(jù)和??.recv()接收響應。處理多個客戶端可通過1.線程:每次連接啟動新線程;2.異步I/O:如asyncio庫實現(xiàn)無阻塞通信。注意事

    如何在Python中切片列表? 如何在Python中切片列表? Jun 20, 2025 am 12:51 AM

    Python列表切片的核心答案是掌握[start:end:step]語法並理解其行為。 1.列表切片的基本格式為list[start:end:step],其中start是起始索引(包含)、end是結束索引(不包含)、step是步長;2.省略start默認從0開始,省略end默認到末尾,省略step默認為1;3.獲取前n項用my_list[:n],獲取後n項用my_list[-n:];4.使用step可跳過元素,如my_list[::2]取偶數(shù)位,負step值可反轉列表;5.常見誤區(qū)包括end索引不

    如何使用DateTime模塊在Python中使用日期和時間? 如何使用DateTime模塊在Python中使用日期和時間? Jun 20, 2025 am 12:58 AM

    Python的datetime模塊能滿足基本的日期和時間處理需求。 1.可通過datetime.now()獲取當前日期和時間,也可分別提取.date()和.time()。 2.能手動創(chuàng)建特定日期時間對象,如datetime(year=2025,month=12,day=25,hour=18,minute=30)。 3.使用.strftime()按格式輸出字符串,常見代碼包括%Y、%m、%d、%H、%M、%S;用strptime()將字符串解析為datetime對象。 4.利用timedelta進行日期運

    Python類中的多態(tài)性 Python類中的多態(tài)性 Jul 05, 2025 am 02:58 AM

    多態(tài)是Python面向對象編程中的核心概念,指“一種接口,多種實現(xiàn)”,允許統(tǒng)一處理不同類型的對象。 1.多態(tài)通過方法重寫實現(xiàn),子類可重新定義父類方法,如Animal類的speak()方法在Dog和Cat子類中有不同實現(xiàn)。 2.多態(tài)的實際用途包括簡化代碼結構、增強可擴展性,例如圖形繪製程序中統(tǒng)一調(diào)用draw()方法,或遊戲開發(fā)中處理不同角色的共同行為。 3.Python實現(xiàn)多態(tài)需滿足:父類定義方法,子類重寫該方法,但不要求繼承同一父類,只要對象實現(xiàn)相同方法即可,這稱為“鴨子類型”。 4.注意事項包括保持方

    我如何寫一個簡單的'你好,世界!” Python的程序? 我如何寫一個簡單的'你好,世界!” Python的程序? Jun 24, 2025 am 12:45 AM

    "Hello,World!"程序是用Python編寫的最基礎示例,用於展示基本語法並驗證開發(fā)環(huán)境是否正確配置。 1.它通過一行代碼print("Hello,World!")實現(xiàn),運行後會在控制臺輸出指定文本;2.運行步驟包括安裝Python、使用文本編輯器編寫代碼、保存為.py文件、在終端執(zhí)行該文件;3.常見錯誤有遺漏括號或引號、誤用大寫Print、未保存為.py格式以及運行環(huán)境錯誤;4.可選工具包括本地文本編輯器 終端、在線編輯器(如replit.com)

    Python中有哪些元素,它們與列表有何不同? Python中有哪些元素,它們與列表有何不同? Jun 20, 2025 am 01:00 AM

    TuplesinPythonareimmutabledatastructuresusedtostorecollectionsofitems,whereaslistsaremutable.Tuplesaredefinedwithparenthesesandcommas,supportindexing,andcannotbemodifiedaftercreation,makingthemfasterandmorememory-efficientthanlists.Usetuplesfordatain

    如何在Python中產(chǎn)生隨機字符串? 如何在Python中產(chǎn)生隨機字符串? Jun 21, 2025 am 01:02 AM

    要生成隨機字符串,可以使用Python的random和string模塊組合。具體步驟為:1.導入random和string模塊;2.定義字符池如string.ascii_letters和string.digits;3.設定所需長度;4.調(diào)用random.choices()生成字符串。例如代碼包括importrandom與importstring、設置length=10、characters=string.ascii_letters string.digits並執(zhí)行''.join(random.c

    See all articles