中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么搭建python miniWeb框架

發布時間:2021-10-18 14:47:22 來源:億速云 閱讀:117 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么搭建python miniWeb框架”,在日常操作中,相信很多人在怎么搭建python miniWeb框架問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么搭建python miniWeb框架”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

miniWeb框架構建基本構建

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

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

miniWeb框架構建-動態顯示

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

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

·實現步驟:
o創建 urls 模塊,模塊的作用提供一個路由字典
字典保存路徑和函數的對應關系
o導入函數的模塊 from application import funs
oroute_dict

定義路由字典

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

·創建 funs 模塊, 提供了具體的功能對應的函數
定義路徑對應的函數

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文件中 動態顯示的判斷部分
1.判斷 路徑 是否在 路由字典中 key in 字典
2.如果在字典中,根據key(請求路徑) 取出 對應的函數的引用
3.執行函數,獲取函數的返回值,然后賦值 給 response_body

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

裝飾器路由(flask)

使用裝飾器工廠,實現裝飾器路由
·修改urls模塊

route_dict = { }

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

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

o裝飾函數

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

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

模板替換

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

List item

o使用正則替換網頁中的內容 {%content%} —> helloworld!
o返回替換后的內容

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

數據庫操作

數據加載

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

渲染頁面

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

多表查詢

·思路:
o關聯查詢
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把查詢的數據進行遍歷,并且拼接html格式的文本
o表示一行   一列
o替換為拼接后的字符串
content = re.sub("{%content%}",data_from_myql,content)

多進程版

·設置進程守護
p1.daemon = True

·啟動進程
p1.start()

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

到此,關于“怎么搭建python miniWeb框架”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安康市| 铜陵市| 页游| 凤冈县| 宽甸| 兴国县| 杭锦旗| 张掖市| 万宁市| 金寨县| 乐都县| 博兴县| 策勒县| 濮阳市| 密云县| 开远市| 义马市| 马尔康县| 芜湖县| 利川市| 石阡县| 奎屯市| 桃园市| 高邑县| 石楼县| 岢岚县| 嘉善县| 新巴尔虎左旗| 祁阳县| 上蔡县| 菏泽市| 双鸭山市| 德清县| 澄江县| 新密市| 肥乡县| 定日县| 沁水县| 新疆| 长武县| 桐庐县|