天天看點

Python flask實戰訂餐系統微信小程式-10連結管理器和連結管理器的初步實作

一、連結管理器

​url_for​

連結統一管理的好處:當項目龐大的時候,使用統一管理應對變更的能力就會更強。

from flask import Flask, url_for
app = Flask(__name__)

@app.route('/')
def hello_world():
    url = url_for("index")
    return 'Hello World' + url

@app.route('/api')
def index():
    return  'Index Page'

@app.route('/api/hello')
def hello():
    return  'Hello World'

if __name__ == '__main__':
    app.run()      
Python flask實戰訂餐系統微信小程式-10連結管理器和連結管理器的初步實作

可以看到​

​url_for​

​​可以​

​将函數的名稱轉化為url的位址​

​。

創建2個​

​Python​

​檔案夾:

Python flask實戰訂餐系統微信小程式-10連結管理器和連結管理器的初步實作

建立​

​UrlManager.py​

​管理類用作連結的管理:

Python flask實戰訂餐系統微信小程式-10連結管理器和連結管理器的初步實作
class UrlManager(object):
    @staticmethod
    def buildUrl(path):
        return path

    @staticmethod
    def buildStaticUrl(path):
        return path

          

引入

from flask import Flask, url_for
from common.libs import UrlManager
# from xuhss import route_xuhss
app = Flask(__name__)
# app.register_blueprint(route_xuhss, url_prefix="/xuhss")

@app.route('/')
def hello_world():
    url = url_for("index")
    url_1 = UrlManager.UrlManager.buildUrl("/api")
    return "Hello World,url:%s,url1:%s" % (url, url_1)      
Python flask實戰訂餐系統微信小程式-10連結管理器和連結管理器的初步實作

二、版本管理

每次将開發代碼釋出到伺服器時,不管是後端代碼和前端代碼都有版本的概念,浏覽器本身有緩存的機制

,如果靜态檔案不加特殊的辨別,前端的靜态檔案是無法再次擷取的。使用者看到的仍是緩存的檔案,使用者看到的不是你看到的。是以才需要版本管理。

每次釋出都有一個版本号, 202207121900、202207122000

每一次無論是通過後端的頭部,希望知道使用者傳回的是哪個版本,并且靜态檔案可以同時擷取,是以我們會在靜态檔案後面加上version字段:

class UrlManager(object):
    @staticmethod
    def buildUrl(path):
        return path

    @staticmethod
    def buildStaticUrl(path):
        path = path + "?ver=" + "202207121900"
        return UrlManager.buildUrl(path)      

調用:

from flask import Flask, url_for
from common.libs import UrlManager
app = Flask(__name__)

@app.route('/')
def hello_world():
    url = url_for("index")
    url_1 = UrlManager.UrlManager.buildUrl("/api")
    url_2 = UrlManager.UrlManager.buildStaticUrl("/css/bootstrap.css")
    return "Hello World,url:%s,url1:%s,url2:%s" % (url, url_1, url_2)      

繼續閱讀