Python Flask: 链接管理器和版本管理

来自CloudWiki
跳转至: 导航搜索

链接管理

flask中使用url_for可以获取视图函数路由.

url_for作用

url_for有如下两个常见用法:

  • 给指定的函数构造 URL,即获取指定视图函数的连接地址。
  • 访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问


from . import admin  # 导入蓝图admin
from flask import render_template, redirect, url_for
 
 
@admin.route("/")
def index():
    return render_template("admin/index.html")
 
@admin.route("/login")
def login():
    return render_template("admin/login.html")
 
@admin.route("/logout")
def logout():
    # return redirect("admin/login")      # 直接使用路由
    return redirect(url_for("admin.login"))   # 使用url_for代替使用直接路由

原文链接:https://blog.csdn.net/qq_36564503/article/details/112855685

入门:Flask原生链接管理器

代码

from flask import Flask,url_for

from imooc import route_imooc
app = Flask(__name__)

@app.route("/")
def hello_world():

    url = url_for("index")
    return "Hello World"+url

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

    
if __name__ == '__main__':#程序入口

    app.run(host='0.0.0.0')

效果图

Python22031601.png

进阶:自建链接管理器

UrlManager

新建目录 common ->libs ->UrlManger.py

class UrlManager(object):
    def __init__(self):
        pass

    @staticmethod
    def buildUrl( path ):
        return path

    @staticmethod
    def buildStaticUrl(path):
        return path

引用

from flask import Flask,url_for
from common.libs.UrlManager import UrlManager

app = Flask(__name__)

@app.route("/")
def hello_world():

    url = url_for("index")
    url_1 = UrlManager.buildUrl( "/api" )
    return "url:" + url+",url_1:" +url_1

效果

Python22031602.png

进阶:版本管理器

UrlManager

common ->libs ->UrlManger.py:

class UrlManager(object):
    def __init__(self):
        pass

    @staticmethod
    def buildUrl( path ):
        return path

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

引用

from flask import Flask,url_for
from common.libs.UrlManager import UrlManager

app = Flask(__name__)

@app.route("/")
def hello_world():

    url = url_for("index")
    url_1 = UrlManager.buildUrl( "/api" )
    url_2 = UrlManager.buildStaticUrl( "/css/bootstrap.css" )
   
    return "url:" + url+",url_1:" +url_1+",url_2:"+url_2

效果

Python22031603.png