内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Python如何實現(xiàn)網(wǎng)站表單提交和模板-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)Python如何實現(xiàn)網(wǎng)站表單提交和模板,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有藁城免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

如果像前面那么做網(wǎng)站,也太丑陋了。并且功能也不多。

在實際做網(wǎng)站中,現(xiàn)在都要使用一個模板,并且在用戶直接看到的頁面,用html語言來寫頁面。

做網(wǎng)站的行業(yè)里面,常常將HTML+CSS+JS組成的網(wǎng)頁,稱作“前端”。它主要負責展示,或者讓用戶填寫一些表格,通過JS提交給用python寫的程序,讓python程序來處理數(shù)據(jù),那些處理數(shù)據(jù)的python程序稱之為“后端”。我常常提醒做“后端”的,不要輕視“前端”。如果立志成為全棧工程師,就要從前到后都通。

關(guān)于本講,主要是要演示一個用模板(HTML)寫一個表單,然后提交給后端的python程序,再轉(zhuǎn)到另外一個顯示的前端頁面顯示。為了簡化流程,這個過程中沒有數(shù)據(jù)處理和CSS+Javascript的工作,所有界面會丑陋。

一個表單

要做一個前端的頁面,顯示的內(nèi)容就如同下圖樣式

Python如何實現(xiàn)網(wǎng)站表單提交和模板

相應(yīng)代碼是,并命名為index.html,存在一個名稱是template的目錄中。

<!DOCTYPE html>
<html>
  <head>
    <title>sign in your name</title>
  </head>
  <body>
    <h3>Please sign in.</h3>
    <form method="post" action="/user">
      <p>Name:<br><input type="text" name="username"></p>
      <p>Email:<br><input type="text" name="email"></p>
      <p>Website:<br><input type="text" name="website"></p>
      <p>Language:<br><input type="text" name="language"></p>
      <input type="submit" value="ok,submit my information">
    </form>
  </body>
</html>

上面的代碼是比較簡單,如果熟悉html的話,不熟悉也不要緊,網(wǎng)上搜索就能理解。注意,沒有CSS+JS,所以簡單。如果在真正開發(fā)中,這兩個是不能少的。

有了這個表單之后,如果用戶把相關(guān)信息都填寫好了。點擊下面的按鈕,就應(yīng)該提交給后端的python程序來處理。

后端處理程序

做為tornado驅(qū)動的網(wǎng)站,首先要能夠把前面的index.html顯示出來,這個一般用get方法,顯示的樣式就按照上面的樣子顯示。

用戶填寫信息之后,點擊按鈕提交。注意觀察上面的代碼表單中,設(shè)定了post方法,所以,在python程序中,應(yīng)該有一個post方法專門來接收所提交的數(shù)據(jù),然后把提交的數(shù)據(jù)在另外一個網(wǎng)頁顯示出來。

在表單中還要注意,有一個action=/user,表示的是要將表單的內(nèi)容提交給/user路徑所對應(yīng)的程序來處理。這里需要說明的是,在網(wǎng)站中,數(shù)據(jù)提交和顯示,路徑是非常重要的。

按照以上意圖,編寫如下代碼,并命名為usercontroller.py,保存在template目錄中

#!/usr/bin/env python
#coding:utf-8
import os.path
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
  def get(self):
    self.render("index.html")
class UserHandler(tornado.web.RequestHandler):
  def post(self):
    user_name = self.get_argument("username")
    user_email = self.get_argument("email")
    user_website = self.get_argument("website")
    user_language = self.get_argument("language")
    self.render("user.html",username=user_name,email=user_email,website=user_website,language=user_language)
handlers = [
  (r"/", IndexHandler),
  (r"/user", UserHandler)
]
template_path = os.path.join(os.path.dirname(__file__),"template")
if __name__ == "__main__":
  tornado.options.parse_command_line()
  app = tornado.web.Application(handlers, template_path)
  http_server = tornado.httpserver.HTTPServer(app)
  http_server.listen(options.port)
  tornado.ioloop.IOLoop.instance().start()

這次代碼量多一些。但是多數(shù)在前面講述tornado基本結(jié)構(gòu)的時候已經(jīng)說過了,跟前面一樣,這里僅僅把重點的和新出現(xiàn)的進行講述,如果對某些內(nèi)容還有疑問,可以參考前面的相關(guān)章節(jié)。

在引入的模塊上,多了一個import os.path,這個模塊主要用在:

template_path = os.path.join(os.path.dirname(__file),"template")

這是要獲取存放程序的目錄template的路徑。

重點看兩個類中都有的self.render(),用這個方法引入相應(yīng)的模板。

self.render("index.html")

顯示index.html模板,但是此時并沒有向模板網(wǎng)頁傳遞任何數(shù)據(jù),僅僅顯示罷了。下面一個:

self.render("user.html",username=user_name,email=user_email,website=user_website,language=user_language)

與前面的不同在于,不僅僅是要引用模板網(wǎng)頁user.html,還要向這個網(wǎng)頁傳遞一些數(shù)據(jù),例如username=user_name,含義就是,在模板中,某個地方是用username來標示得到的數(shù)據(jù),而user_name是此方法中的一個變量,也就是對應(yīng)一個數(shù)據(jù),那么模板中的username也就對應(yīng)了user_name的數(shù)據(jù),這是通過username=user_name完成的。后面的變量同理。

那么,user_name的數(shù)據(jù)是哪里來的呢?就是在index.html頁面的表單中提交上來的。注意觀察路徑的設(shè)置,r"/user", UserHandler,也就是在form中的action='/user',就是要將數(shù)據(jù)提交給UserHandler處理,并且是通過post方法。所以,在UserHandler類中,有post()方法來處理這個問題。通過self.get_argument()來接收前端提交過來的數(shù)據(jù),接收方法就是,self.get_argument()的參數(shù)與index.html表單form中的各項的name值相同,就會得到相應(yīng)的數(shù)據(jù)。例如user_name = self.get_argument("username"),就能夠得到index.html表單中name為"username"的元素的值,并賦給user_name變量。

還差一個網(wǎng)頁。

顯示結(jié)果

在上面的代碼中,又多了一個模板:user.html,對這個模板,跟前面那個模板有一點兒不一樣的地方,就是要引入一些變量。它的代碼是這樣的:

<!DOCTYPE html>
<html>
  <head>
    <title>sign in your name</title>
  </head>
  <body>
    <h3>Your Information</h3>
    <p>Your name is {{username}}</p>
    <p>Your email is {{email}}</p>
    <p>Your website is {{website}}, it is very good. This website is make by {{language}}</p>
  </body>
</html>

請將上面的代碼和這句話對照:

self.render("user.html",username=user_name,email=user_email,website=user_website,language=user_language)

上面的模板代碼存儲為名為user.html的文件,并且和前面已經(jīng)保存的在同一個目錄中。

看HTML模板代碼中,有類似{{username}}的變量,模板中用{{}}引入變量,這個變量就是在self.render()中規(guī)定的,兩者變量名稱一致,對應(yīng)將相應(yīng)的值對象引入到模板中。

運行結(jié)果

進入到template目錄,執(zhí)行:

~/template$ python userscontroller.py

然后在瀏覽器的地址欄中輸入

http://localhost:8000

出現(xiàn)如下圖的表單,并填寫表單內(nèi)容

Python如何實現(xiàn)網(wǎng)站表單提交和模板

點擊“按鈕”之后:

Python如何實現(xiàn)網(wǎng)站表單提交和模板

關(guān)于“Python如何實現(xiàn)網(wǎng)站表單提交和模板”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前文章:Python如何實現(xiàn)網(wǎng)站表單提交和模板-創(chuàng)新互聯(lián)
地址分享:http://www.rwnh.cn/article48/essep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航、自適應(yīng)網(wǎng)站手機網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計公司、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
金溪县| 乡城县| 福州市| 沙坪坝区| 米脂县| 酉阳| 石嘴山市| 会东县| 乌恰县| 安多县| 和平县| 浮山县| 收藏| 浦东新区| 北安市| 凤山市| 江华| 苗栗县| 阜新市| 鸡西市| 道真| 汨罗市| 彭泽县| 旬阳县| 林西县| 安图县| 张家口市| 姚安县| 颍上县| 织金县| 武威市| 邹平县| 田东县| 西青区| 梁河县| 商洛市| 建昌县| 临西县| 商河县| 腾冲县| 泸定县|