Python web框架
1、簡單概念
tornado
socket、邏輯處理
Django
flask
邏輯處理
第三方處理模塊(包含了socket)
jinja2模塊
Models 數據庫處理
Views 模板HTML文件
Controllers 業務邏輯(根據訪問的URL不同,調用不同函數)
MVC --MVC框架
Models 數據庫處理
Templates 模板HTML文件
Views 業務邏輯(根據訪問的URL不同,調用不同函數)
MTV框架
Python框架原理圖
2、tornado框架簡單介紹
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的頁面了
總結起來是五點
2、利用tornado框架實現數據提交
主要是修改上面s1的代碼
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) #1、打開js2.html文件,讀取內容(包含特殊語法) #2、xxxooo = [11,22,333,44] 讀取內容(包含特殊語法) #3、得到新的字符串 #4、將得到新的字符串返回給用戶 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>
運行如圖,數據自動添加到下面
3、對於模板語言,主要有三類
模板語言分為三類:
{{}}表達式
{% 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自己也有一些模板語言