最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python miniWeb框架搭建過程詳解

 更新時間:2021年10月16日 14:22:29   作者:IT癮君  
這篇文章主要介紹了python miniWeb框架搭建,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

框架概念

框架和web服務(wù)器關(guān)系

在這里插入圖片描述

·靜態(tài)資源:不是經(jīng)常變化的資源、往往是固定不變的資源
·動態(tài)資源:經(jīng)常變化的資源
·模板文件:提供了一個顯示的模板,顯示的內(nèi)容不同,但是結(jié)構(gòu)是一樣的
·服務(wù)器的作用:
o1)接受客戶端請求
o2)響應客戶端請求
o3)調(diào)用應用框架獲取

miniWeb框架構(gòu)建基本構(gòu)建

·思路:
o判斷請求的資源路徑是 是否是 .py 結(jié)尾
o如果 .py 結(jié)尾,——> 顯示動態(tài)內(nèi)容
o如果.html 結(jié)尾,——> 顯示靜態(tài)內(nèi)容
·核心代碼:

核心代碼:
    # index.py
    if file_path.endswith(".py"):
    # 2. 讓.py 顯示的內(nèi)容和.html顯示的內(nèi)容區(qū)別開開
        response_body = "This is index Show! %s" % time.ctime()
        # 調(diào)用 utils 模塊的 create_http_response 函數(shù),拼接響應協(xié)議
        response_data = utils.create_http_response("200 OK", response_body.encode())
    # index.html
    else:
    ....

miniWeb框架構(gòu)建-動態(tài)顯示

·思路:
o首先必須是 .py 結(jié)尾的文件
o判斷請求的資源路徑,并且根據(jù)資源路徑不同設(shè)置 不同的 response_body
o當請求的資源路徑不存在,返回 404 錯誤
·核心代碼:

# 3. 判斷請求的資源路徑,根據(jù)不同的路徑顯示不同的額內(nèi)容
        if file_path == "/index.py":
            response_body = "This is index show!"
            # 調(diào)用 utils 模塊的 create_http_response 函數(shù),拼接響應協(xié)議
            response_data = utils.create_http_response("200 OK", response_body.encode())
        elif file_path == "/center.py":
            response_body = "This is center show!"
            # 調(diào)用 utils 模塊的 create_http_response 函數(shù),拼接響應協(xié)議
            response_data = utils.create_http_response("200 OK", response_body.encode())
        elif file_path == "/gettime.py":
            response_body = "helloworld! %s" % time.ctime()
            # 調(diào)用 utils 模塊的 create_http_response 函數(shù),拼接響應協(xié)議
            response_data = utils.create_http_response("200 OK", response_body.encode())
        else:
            response_body = "Sorry Page Not Found ! 404"
            # 調(diào)用 utils 模塊的 create_http_response 函數(shù),拼接響應協(xié)議
            response_data = utils.create_http_response("404 Not Found", response_body.encode())

路由列表(django)

在這里插入圖片描述

·實現(xiàn)步驟:
o創(chuàng)建 urls 模塊,模塊的作用提供一個路由字典
字典保存路徑和函數(shù)的對應關(guān)系
o導入函數(shù)的模塊 from application import funs
oroute_dict

定義路由字典

route_dict = {
    '/index.py': funs.index,
    '/center.py': funs.center,
    '/gettime.py': funs.gettime
}

·創(chuàng)建 funs 模塊, 提供了具體的功能對應的函數(shù)
定義路徑對應的函數(shù)

import time
def index():
    """ 處理 index.py 請求 """
    return "This is index show!--funs"
def center():
    """ 處理 index.py 請求 """
    return "This is center show!"
def gettime():
    """ 處理 index.py 請求 """
    return "This is gettime show! %s " % time.ctime()

·修改app文件中 動態(tài)顯示的判斷部分
1.判斷 路徑 是否在 路由字典中 key in 字典
2.如果在字典中,根據(jù)key(請求路徑) 取出 對應的函數(shù)的引用
3.執(zhí)行函數(shù),獲取函數(shù)的返回值,然后賦值 給 response_body

if file_path in urls.route_dict:
            # 根據(jù)key值,去urls.route_dict中,獲取值(函數(shù)引用)
            func = urls.route_dict[file_path]
            # 根據(jù)路由字典,獲取函數(shù)的引用,執(zhí)行該函數(shù),返回執(zhí)行的結(jié)果,
            # 保存到 response_body 變量中
            response_body = func()
            # 調(diào)用 utils 模塊的 create_http_response 函數(shù),拼接響應協(xié)議
            response_data = utils.create_http_response("200 OK", response_body.encode())
        else:

裝飾器路由(flask)

使用裝飾器工廠,實現(xiàn)裝飾器路由
·修改urls模塊

route_dict = { }

·修改funs模塊
o導入 from application import urls
o創(chuàng)建裝飾器工廠,并且把路徑添加到字典中(創(chuàng)建路由字典)

def route(path):
    # path 向裝飾器內(nèi)部傳遞的參數(shù)   path   /index.py
    # 裝飾器
    # 字典
    # {"index.py":index函數(shù)引用}
    def function_out(func):    #func   index函數(shù)的引用
        # 2-----
        urls.route_dict[path] = func
        # print("裝飾[%s]" % path)
        # 裝飾器內(nèi)層函數(shù)
        def function_in():
            # 調(diào)用原函數(shù)并且執(zhí)行
            return func()
        return function_in
    return function_out

o裝飾函數(shù)

@route("/center.py")
def center():
    """ 處理 index.py 請求 """
    return "This is center show!"

o在 app模塊中導入 funs 模塊
此時funs 模塊中的函數(shù)被加載,加載的同時被裝飾(就會向字典中添加路由信息)

模板替換

·思路
o拷貝資源(templates)到工程下
o修改 funs模塊中的 index 和 center函數(shù)
o在函數(shù)中讀取對應的文件

List item

o使用正則替換網(wǎng)頁中的內(nèi)容 {%content%} —> helloworld!
o返回替換后的內(nèi)容

with open("templates/index.html") as file:? content = file.read()
return content

數(shù)據(jù)庫操作

數(shù)據(jù)加載

·創(chuàng)建并導入數(shù)據(jù)到數(shù)據(jù)庫
o創(chuàng)建數(shù)據(jù)庫 create database stock_db charset=utf8
o使用數(shù)據(jù)庫 use stock_db
o導入數(shù)據(jù)庫(先客戶端登錄)
o準備腳本文件
o導入腳本 source stock_db.sql
·修改index函數(shù)
o連接數(shù)據(jù)庫,獲取數(shù)據(jù)
§導入模塊
§建立連接
§創(chuàng)建游標
§使用游標執(zhí)行sql
§獲取查詢的結(jié)果
data_from_mysql = str(cur.fetchall())
§關(guān)閉資源
先關(guān)閉游標,在關(guān)閉連接
§替換為查詢的數(shù)據(jù)
content = re.sub("{%content%}",data_from_mysql,content)

渲染頁面

·思路:
o把查詢的數(shù)據(jù)進行遍歷,并且拼接html格式的文本
o表示一行   一列
o替換為拼接后的字符串
content = re.sub("{%content%}",data_from_myql,content)
o注意:
%s %s %s —> line # line 是一個元組

多表查詢

·思路:
o關(guān)聯(lián)查詢
select i.code,i.short,i.chg,i.turnover,i.price,i.highs,f.note_info from info i, focus f where i.id = f.id
o把查詢的數(shù)據(jù)進行遍歷,并且拼接html格式的文本
o表示一行   一列
o替換為拼接后的字符串
content = re.sub("{%content%}",data_from_myql,content)

多進程版

·設(shè)置進程守護
p1.daemon = True

·啟動進程
p1.start()

·關(guān)閉new_client_socket ,否則無法釋放套接字
new_client_socket.close()

到此這篇關(guān)于python miniWeb框架搭建的文章就介紹到這了,更多相關(guān)python miniWeb框架搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?在PDF中繪制線條、矩形、橢圓形的方法

    Python?在PDF中繪制線條、矩形、橢圓形的方法

    這篇文章主要介紹了Python在PDF中繪制線條、矩形、橢圓形,本文將通過以下幾個示例介紹如何使用Python在PDF中繪制不同的圖形,需要的朋友可以參考下
    2024-11-11
  • Python綜合應用名片管理系統(tǒng)案例詳解

    Python綜合應用名片管理系統(tǒng)案例詳解

    這篇文章主要介紹了Python綜合應用名片管理系統(tǒng),結(jié)合具體案例形式詳細分析了Python名片管理系統(tǒng)相關(guān)步驟、原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • 基于Python實現(xiàn)配置熱加載的方法詳解

    基于Python實現(xiàn)配置熱加載的方法詳解

    所謂的配置熱加載,也就是說當服務(wù)收到配置更新消息之后,我們不用重啟服務(wù)就可以使用最新的配置去執(zhí)行任務(wù)。本文將介紹如何用Python實現(xiàn)配置熱加載,需要的可以參考一下
    2022-07-07
  • Python面向?qū)ο缶幊袒A(chǔ)解析(二)

    Python面向?qū)ο缶幊袒A(chǔ)解析(二)

    這篇文章主要介紹了Python面向?qū)ο缶幊袒A(chǔ)解析,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • Python之Selenium自動化瀏覽器測試詳解

    Python之Selenium自動化瀏覽器測試詳解

    這篇文章主要為大家詳細介紹了Python自動化瀏覽器測試,使用Selenium,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Windows+Anaconda3+PyTorch+PyCharm的安裝教程圖文詳解

    Windows+Anaconda3+PyTorch+PyCharm的安裝教程圖文詳解

    這篇文章主要介紹了Windows+Anaconda3+PyTorch+PyCharm的安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python?如何實現(xiàn)變量交換

    Python?如何實現(xiàn)變量交換

    這篇文章主要介紹了Python?如何實現(xiàn)變量交換,Python?程序員肯定知道?a,b?=?b,a,這句話用來交換兩個變量。相較于其它語言需要引入一個?temp?來臨時存儲變量的做法,Python?的這種寫法無疑非常優(yōu)雅,下面我們來看看具體的實現(xiàn)過程吧
    2022-01-01
  • 啥是佩奇?使用Python自動繪畫小豬佩奇的代碼實例

    啥是佩奇?使用Python自動繪畫小豬佩奇的代碼實例

    今天小編就為大家分享一篇關(guān)于啥是佩奇?使用Python自動繪畫小豬佩奇的代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python基礎(chǔ)篇之字符串方法總結(jié)

    Python基礎(chǔ)篇之字符串方法總結(jié)

    Python提供了豐富的字符串處理方法,可以方便地對字符串進行操作、處理和轉(zhuǎn)換。在本文中,我們將介紹Python中常用的字符串方法,需要的可以參考一下
    2023-04-04
  • Pytorch 使用不同版本的cuda的方法步驟

    Pytorch 使用不同版本的cuda的方法步驟

    這篇文章主要介紹了Pytorch 使用不同版本的cuda的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04

最新評論

泸州市| 台中市| 南漳县| 柳林县| 梅河口市| 文化| 虎林市| 改则县| 重庆市| 合川市| 五家渠市| 巴彦县| 顺昌县| 平和县| 云南省| 那坡县| 彰化县| 长武县| 平阴县| 敦化市| 景宁| 安西县| 阆中市| 巴彦县| 鲁甸县| 香格里拉县| 毕节市| 怀远县| 林西县| 弋阳县| 扶沟县| 收藏| 白玉县| 金乡县| 卫辉市| 阜平县| 犍为县| 登封市| 沙田区| 资兴市| 雅江县|