Python之tornado框架原理

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本身也有一些模板語言

相關文章
相關標籤/搜索