1. 程式人生 > >在Python中使用HTML模版的教程

在Python中使用HTML模版的教程

轉載 作者:廖雪峰
這篇文章主要介紹了在Python中使用HTML模版的教程,HTML模版也是Python的各大框架下的一個基本功能,需要的朋友可以參考下

Web框架把我們從WSGI中拯救出來了。現在,我們只需要不斷地編寫函式,帶上URL,就可以繼續Web App的開發了。

但是,Web App不僅僅是處理邏輯,展示給使用者的頁面也非常重要。在函式中返回一個包含HTML的字串,簡單的頁面還可以,但是,想想新浪首頁的6000多行的HTML,你確信能在Python的字串中正確地寫出來麼?反正我是做不到。

俗話說得好,不懂前端的Python工程師不是好的產品經理。有Web開發經驗的同學都明白,Web App最複雜的部分就在HTML頁面。HTML不僅要正確,還要通過CSS美化,再加上覆雜的JavaScript指令碼來實現各種互動和動畫效果。總之,生成HTML頁面的難度很大。

由於在Python程式碼裡拼字串是不現實的,所以,模板技術出現了。

使用模板,我們需要預先準備一個HTML文件,這個HTML文件不是普通的HTML,而是嵌入了一些變數和指令,然後,根據我們傳入的資料,替換後,得到最終的HTML,傳送給使用者:

2015429163524327.png (530×340)

這就是傳說中的MVC:Model-View-Controller,中文名“模型-檢視-控制器”。

Python處理URL的函式就是C:Controller,Controller負責業務邏輯,比如檢查使用者名稱是否存在,取出使用者資訊等等;

包含變數{{ name }}的模板就是V:View,View負責顯示邏輯,通過簡單地替換一些變數,View最終輸出的就是使用者看到的HTML。

MVC中的Model在哪?Model是用來傳給View的,這樣View在替換變數的時候,就可以從Model中取出相應的資料。

上面的例子中,Model就是一個dict:

{ 'name': 'Michael' }

只是因為Python支援關鍵字引數,很多Web框架允許傳入關鍵字引數,然後,在框架內部組裝出一個dict作為Model。

現在,我們把上次直接輸出字串作為HTML的例子用高階大氣上檔次的MVC模式改寫一下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from flask import Flask, request, render_template   app = Flask(__name__)   @app .route( '/' , methods = [ 'GET' , 'POST' ]) def home():   return render_template( 'home.html' )   @app .route( '/signin' , methods = [ 'GET' ]) def signin_form():   return render_template( 'form.html' )   @app .route( '/signin' , methods = [ 'POST' ]) def signin():   username = request.form[ 'username' ]   password = request.form[ 'password' ]   if username = = 'admin' and password = = 'password' :    return render_template( 'signin-ok.html' , username = username)   return render_template( 'form.html' , message = 'Bad username or password' , username = username)   if __name__ = = '__main__' :   app.run()

Flask通過render_template()函式來實現模板的渲染。和Web框架類似,Python的模板也有很多種。Flask預設支援的模板是jinja2,所以我們先直接安裝jinja2:

?
1 $ easy_install jinja2

然後,開始編寫jinja2模板:

?
1 home.html

用來顯示首頁的模板:

?
1 2 3 4 5 6 7 8 9 10 11 <html> <head>   <title>Home< / title>

相關推薦

pythonPIL安裝教程

很多同學會遇到我這樣的問題,當解決一些圖片問題(本人在解決ctf隱寫術的題型時由於需要跑python指令碼),在安裝pil時出現了這樣的錯誤,這也就加大了我們安裝模組的手動工作力度,在開始安裝PIL時,可以說我是一頭霧水,通過檢視各種教程和心得,獲得了自己的一份小的心得,

Python使用HTML模版教程

轉載 作者:廖雪峰 這篇文章主要介紹了在Python中使用HTML模版的教程,HTML模版也是Python的各大框架下的一個基本功能,需要的朋友可以參考下 Web框架把我們從WSGI中拯救出來了。現在,我們只需

【轉載】Python的正則表達式教程

大小 區別 some 操作 按位或 出了 sta 技術分享 嘗試 本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正則表達式經常被用到,而自己總是記不全,轉載一份完整的以備不時之需。 1.

pythonsys.argv的說明(讀《python簡明教程》的困惑解答)

pan span for 源文件 後來 clas using str 過多 在閱讀《python簡明教程》的時候,第8章、14章有對sys模塊的使用,其中關於sys.argv的說明有一點困惑,讓自己思索了好久,後來才恍然大悟,在這裏分享一下我所理解到的,以便於和我有一樣困惑

python 的turtle使用教程

python2.6版本中引入的一個簡單的繪圖工具,叫做海龜繪圖(Turtle Graphics) 1.使用海龜繪圖首先我們需要匯入turtle,如下所示:  from turtle import * #將turtle中的所有方法匯入 2.海龜繪圖屬性:  (1)位置  

Python使用正則表示式去掉字串裡的html標籤

有時候會獲得一些帶html標籤的字串,需要把html標籤去掉,獲得乾淨的字串,這時候可以使用正則表示式。 程式碼如下: import re htmeString = '''    <ul id="TopNav">    &nbs

Python使用正則表達式去掉字符串裏的html標簽

class tab import pytho 設置 裏的 highlight abc dal 有時候會獲得一些帶html標簽的字符串,需要把html標簽去掉,獲得幹凈的字符串,這時候可以使用正則表達式。 代碼如下: import re htmeString = ‘‘‘

Python從零入門教程 | 在不同的作業系統安裝Python程式設計環境

Python是一種跨平臺的程式語言,這意味著它能夠執行在所有主要的作業系統中,那麼我們所熟知的作業系統包括:Windows、MacOs、 Linux。那麼今天要講的就是如何在每個作業系統中成功的安裝python. 一、在Windows系統中搭建Python程式設計環境 01.下

pythonpdb的使用教程

1.執行指令碼至斷點pdb.set_trace()處,n+enter/enter執行當前的statement 2.推出debug:quit/q,暴力退出 3.列印變數的值:p 變數A(條件是A已經執行得到) 4.停止debug繼續執行程式:c 5.debug過程中顯示程式碼:l

python處理html的以&#開頭的編碼

亂碼格式類似‘&#22270;&#28789;&#31243;&#24207;&#35774;&#35745;&#19995;&#20070;’ 程式碼為: text='&#22270;&#2

pythonx-path對html的使用

初學XPath,其實很簡單 XPath 是一門在 XML 文件中查詢資訊的語言。XPath 用於在 XML 文件中通過元素和屬性進行導航。 (我的理解:XPath 就是一個用來查詢xml節點的路徑語言,一個路徑字串語法) XML 例項文件 我們將在下面的例子中使

Python的正則表示式教程

轉自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html1. 正則表示式基礎1.1. 簡單介紹正則表示式並不是Python的一部分。正則表示式是用於處理字串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎

Python的PIL庫的一些簡單教程

PIL 庫中最重要的也是最常用的類是Image類from PIL import Image使用Image類開啟圖片使用open()函式image_ori=Image.open("pic/chenming.png");這樣就得到了一個Image類的例項,它具有一些屬性和方法pr

菜鳥教程-python的包

轉載自:http://www.runoob.com/python/python-modules.html包是一個分層次的檔案目錄結構,它定義了一個由模組及子包,和子包下的子包等組成的 Python 的應用環境。簡單來說,包就是資料夾,但該資料夾下必須存在 __init__.p

十八哥視訊教程html和css的tips

9、盒模型:把div當成一個盒子來看待,盒子與盒子直接的距離叫margin(外邊距),盒子壁的厚度叫bord(邊框),盒子壁與內容物之間的距離叫padding(內邊距),裡面放的東西叫做content(內容物);

python安裝配置pyspark庫教程需要配合spark+hadoop使用

單獨安裝pyspark庫在單機上是沒法執行的,需要有相應的分散式軟體,這裡可以是spark+hadoop,配置安裝教程連結:spark2.3在window10當中來搭建python3的使用環境pyspark配置pyspark庫之前在安裝spark的時候,提到過pyspark庫

python超簡單安裝mxnet (附conda安裝教程)

安裝類別: 1) 用pip安裝mxnet的python版本(CPU版本)  2) 用pip安裝mxnet的python版本(GPU版本)  3) 編譯安裝到作業系統上   這裡只說前兩種,且不管是windows還是linux,python2還是python3

PythonRabbitMQ的使用(安裝和簡單教程

RabbitMQ(Rabbit Message Queue)是流行的開源訊息佇列系統,用erlang語言開發。 RabbitMQ 它依賴於Erlang,需要先安裝Erlang。首先確定你的window電腦是32位還是64位,以下的安裝以window 64位電腦舉例。

Python實戰開發之Pyramid Web框架在商城專案的應用教程

第一講:Python基礎和入門介紹(Web開發基礎) 介紹Web開發技術和Python語言的基礎知識。通過本講的學習,學員可以瞭解Python Web開發技術的基礎和相關常識,為後續學習打下基礎。 第二講:Python語言基礎(運算子與表示式,控制流,函式,模組) 在第一講的基礎上繼續深入學習Pyth

使用Python的HTMLParser、cookielib抓取和解析網頁、從HTML文件提取連結、影象、文字、Cookies .

對搜尋引擎、檔案索引、文件轉換、資料檢索、站點備份或遷移等應用程式來說,經常用到對網頁(即HTML檔案)的解析處理。事實上,通過 Python語言提供的各種模組,我們無需藉助Web伺服器或者Web瀏覽器就能夠解析和處理HTML文件。本文上篇中,我們介紹了一個可以幫助簡化開啟