第六篇 Flask中的路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用

@app.route("/",methods=["GET","POST"])

为什么要这么用?其中的工作原理我们知道多少?

一、@app.route() 装饰器中的参数

methods :当前 url 地址,允许访问的请求方式

@app.route("/info", methods=["GET", "POST"])
def student_info():
    stu_id = int(request.args["id"])
    return f"Hello girl {stu_id}"  # Python3.6的新特性 f"{变量名}"

endpoint :反向生成url地址标志,默认视图函数名(url_for)

from flask import url_for

@app.route("/info", methods=["GET", "POST"], endpoint="r_info")
def student_info():
    print(url_for("r_info"))  # /info
    stu_id = int(request.args["id"])
    return f"Hello  girl {stu_id}"  # Python3.6的新特性 f"{变量名}"

defaults :视图函数的参数默认值{"nid":1}

from flask import url_for

@app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100})
def student_info(nid):
    print(url_for("r_info"))  # /info
    # stu_id = int(request.args["id"])
    print(nid)  # 100
    return f"Hello girl {nid}"  # Python3.6的新特性 f"{变量名}"

strict_slashes :url地址结尾符"/"的控制 ,False : 无论结尾 "/" 是否存在均可以访问,True:必须严格遵循route的路由规则。

# 访问地址 : /info
@app.route("/info", strict_slashes=True)
def student_info():
    return "Hello girl info"

# 访问地址 : /infos  or  /infos/
@app.route("/infos", strict_slashes=False)
def student_infos():
    return "Hello girl infos"

redirect_to : url地址重定向,在进入视图函数之前重定向(301)

# 访问地址 : /info 浏览器跳转至 /infos
@app.route("/info", strict_slashes=True, redirect_to="/infos")
def student_info():
    return "Hello girl info"

@app.route("/infos", strict_slashes=False)
def student_infos():
    return "Hello girl infos"

subdomain :子域名前缀 subdomian="fengchong" 这样写可以得到 fengchong.kaifa.com 前提是app.config["SERVER_NAME"] = "kaifa.com"

app.config["SERVER_NAME"] = "kaifa.com"

@app.route("/info",subdomain="fengchong")
def student_info():
    return "Hello girl info"

# 访问地址为: fengchong.kaifa.com/info

动态路由参数<int:nid>or<string:nid>:

from flask import url_for

# 访问地址 : http://127.0.0.1:5000/info/1
@app.route("/info/<int:nid>", methods=["GET", "POST"], endpoint="r_info")
def student_info(nid):
    print(url_for("r_info",nid=2))  # /info/2
    return f"Hello girl {nid}"  # Python3.6的新特性 f"{变量名}"

<int:nid> 就是在url后定义一个参数接收,如果不指定参数类型默认为所有接受的参数都会被转为字符串类型。

但是这种动态参数路由,在url_for的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常

原文地址:https://www.cnblogs.com/fengchong/p/10246395.html

时间: 2024-10-09 19:12:40

第六篇 Flask中的路由系统的相关文章

Flask第六篇 Flask中路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道多少? 请关注跟DragonFire学Flask 之 路由系统 ,这里有你想要的答案 1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/inf

Flask中的路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 至于为什么这么使用,马上开始介绍 [email protected]() 装饰器中的参数 (1).methods: 当前url地址,允许访问的请求方式,默认支持"GET", 如果想加入新的请求方式,就必须加上"GET" USER = {"usernam

Flask最强攻略 - 跟DragonFire学Flask - 第六篇 Flask 中内置的 Session

Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from flask import session app = Flask(__name__) app.secret_key = "DragonFire" secret_key 实际上是用来加密字符串的,如果在实例化的app中没有 secret_key 那么开启session一定会抛异常的 2.

Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道多少? 请关注跟DragonFire学Flask 之 路由系统 ,这里有你想要的答案 1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/inf

Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将 查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做

11.2 Flask 配置文件,路由系统

配置文件系统 自定义配置文件 创建一个 setting.py 用于存放配置文件的相关属性 配置文件中可以进行分级继承来区分不同视图的配置文件设置 默认配置文件放在项目根路径下 # settings.py class Base(object): # 所有的都要有用到的配置更改 TEST = True class Dev(Base): DEV = True class Pro(Base): PRO = True 配置文件的设置方式 常用的是以下三种 # 方式1 直接更改 app.config["要更

asp.net中的路由系统

ASP.NET MVC重写了ASP.NET管道HttpModule和处理程序HttpHandler.MVC自定义了MvcHandler实现了Controller的激活和Action的执行.但是在请求到达这里之前把Http请求Url解析到正确的Controller和Action上,是通过自定义HttpModule来实现的,这个自定义的HttpModule就是Url路由系统UrlRoutingModule. 1:UrlRoutingModule拦截请求的Url,对Url进行解析,得到以Control

MVC3中的路由系统(Routes)

转载:http://blog.csdn.net/francislaw/article/details/7429317 MVC中,用户访问的地址并不映射到服务器中对应的文件,而是映射到对应Control里对应的ActionMethod,由ActionMethod 来决定返回用户什么样的信息.而把用户访问的地址对应到对应的Action(当然也可以是对应的文件)的工作有路由系统完成,这其中许多复杂的处理 由.net自动完成,而开发者需要告诉.net用户的访问地址和对应Action的具体映射关系. MV

Flask最强攻略 - 跟DragonFire学Flask - 第二篇 Flask 中的 Render Redirect HttpResponse

1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 2.Flask中的Redirect 每当访问"/redi"这个地址的时候,视图函数redi会触发redirect("/") 跳转到url地址:  "/" 并会触发"/"对应的视图函数index() 3.Flask 中的 render (render_template) HTML模板渲染是每个Web框架中都必