Python web框架css
一、簡單概念
tornado
socket、邏輯處理
Django
flask
邏輯處理
第三方處理模塊(包含了socket)
jinja2模塊
Models 數據庫處理
Views 模板HTML文件
Controllers 業務邏輯(根據訪問的URL不一樣,調用不一樣函數)
MVC --MVC框架
Models 數據庫處理
Templates 模板HTML文件
Views 業務邏輯(根據訪問的URL不一樣,調用不一樣函數)
MTV框架
html
Python框架原理圖python
二、tornado框架簡單介紹web
s1的代碼是這樣的數據庫
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): # self.write("Hello, world") self.render('js2.html') settings = { 'template_path':'template',#路徑配置,就是自動取到該路徑下尋找文件 'static_path':'static',#靜態文件配置,須要特殊處理 } #路由映射,根據不一樣url對應到不一樣的類裏面 application = tornado.web.Application([ (r"/index", MainHandler), ],**settings) #第二個接收配置文件 if __name__ == "__main__": application.listen(8888)#監聽端口 tornado.ioloop.IOLoop.instance().start()
這樣簡單配置以後就能夠運行一個簡單的網頁了,訪問頁面則能夠返回js2.html的頁面了flask
總結起來是五點app
二、利用tornado框架實現數據提交框架
主要是修改上面s1的代碼socket
import tornado.ioloop import tornado.web input_list=[]#用來接收用戶的數據 class MainHandler(tornado.web.RequestHandler): def get(self): # self.write("Hello, world") self.render('js2.html',xxxooo = input_list) def post(self, *args, **kwargs): name = self.get_argument('jjj')#根據value提取用戶輸入的名字 input_list.append(name) print(name) #一、打開js2.html文件,讀取內容(包含特殊語法) #二、xxxooo = [11,22,333,44] 讀取內容(包含特殊語法) #三、獲得新的字符串 #四、將獲得新的字符串返回給用戶 self.render('js2.html',xxxooo = input_list) settings = { 'template_path':'template',#路徑配置,就是自動取到該路徑下尋找文件 'static_path':'static',#靜態文件配置,須要特殊處理 'static_url_prefix':'/sss/',#標記文件開始的名字 } #路由映射,根據不一樣url對應到不一樣的類裏面 application = tornado.web.Application([ (r"/index", MainHandler), ],**settings) #第二個接收配置文件 if __name__ == "__main__": application.listen(8888)#監聽端口 tornado.ioloop.IOLoop.instance().start()
下面是js2的html文件,寫了一個表單函數
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>你好</title> <link rel="stylesheet" href="/sss/commons.css"> </head> <body> <P style="font-size: 50px"> js3</P> <h1>提交內容</h1> <form method="post" action="/index"> <input type="text" name="jjj"> <input type="submit" value="提交"> </form> <h1>顯示內容</h1> <ul> {% for item in xxxooo %} <li>{{item}}</li> {% end %} </ul> <!--<script src="sss/jayzhou.js"></script>--> </body> </html>
運行如圖,數據自動添加到下面
三、對於模板語言,主要有三類
模板語言分爲三類:
{{}}表達式
{% if %}{% end %}
例如:
<ul>
{% for item in xxxooo %}
<li>{{item}}</li>
{% end %}
</ul> #模板語言裏經過for循環展現數據
自定義:
uimethod/uimodle
對於自定義的uimethod,咱們先在tornado_demo裏面簡單寫個uimethod模塊,如圖
而後在上面的s1裏面配置好設置文件
settings = { 'template_path':'template',#路徑配置,就是自動取到該路徑下尋找文件 'static_path':'static',#靜態文件配置,須要特殊處理 'static_url_prefix':'/sss/',#標記文件開始的名字 'ui_methods':uimethod#這個是咱們導入的文件 }
在js2.html文件裏面的模板語言
<ul> {% for item in xxxooo %} <li>{{item}}</li> <h2>{{func(item)}}</h2> {% end %} <h2>{{func(amp)}}</h2>
func函數是咱們在uimethod裏面自定義的函數,輸出如圖
對於uimodule,咱們須要寫建立一個新的模塊,如圖,固然也要在settings裏面設置好
js2.html文件裏面要這樣寫
<ul> {% for item in xxxooo %} <li>{{item}}</li> {% end %} <h2>{{func(amp)}}</h2> <h3>{% module custom() %}</h3> <!--調用自定義的custom模塊--> </ul>
輸出如圖
tarnodo本身也有一些模板語言