Flask中的路由系统

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

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

至于为什么这么使用,马上开始介绍

[email protected]() 装饰器中的参数

(1).methods: 当前url地址,允许访问的请求方式,默认支持"GET", 如果想加入新的请求方式,就必须加上"GET"

USER = {"username": "zm", "password": "123"}

@app.route("/", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:
            session["user"] = USER["username"]
            return redirect("/index")
        return render_template("login.html", msg="用户名或密码错误")
    return render_template("login.html", msg=None)

(2).endpoint: 反向取到当前的url地址,默认为视图函数名 (r_login)

@app.route("/", methods=["GET", "POST"], endpoint="r_login")
def login():
    print(url_for("r_login"))
    if request.method == "POST":
        if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:
            session["user"] = USER["username"]
            return redirect("/index")
        return render_template("login.html", msg="用户名或密码错误")
    return render_template("login.html", msg=None)

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

@app.route("/", methods=["GET", "POST"], defaults={"id": 1})
def login(id):
    print(id)
    if request.method == "POST":
        if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:
            session["user"] = USER["username"]
            return redirect("/index")
        return render_template("login.html", msg="用户名或密码错误")
    return render_template("login.html", msg=None)

(4).strict_slashes : url地址结尾符"/"的控制 False : 无论结尾 "/" 是否存在均可以访问 , True : 结尾必须不能是 "/"

# strict_slashes=False    访问地址: /index or /index/
@app.route("/index", strict_slashes=False)
def index():
    if not session.get("user"):
        return redirect("/")
    return f"Hello {USER[‘username‘]} 小哥"   # Python3.6的新特性f“{变量名}”

# strict_slashes=True    访问地址: index/
@app.route("/index", strict_slashes=True)
def index():
    if not session.get("user"):
        return redirect("/")
    return f"Hello {USER[‘username‘]} 小哥"   # Python3.6的新特性f“{变量名}”

(5).redirect_to: url地址重定向

# 访问地址: /index 浏览器跳转至 /indexs
@app.route("/index", strict_slashes=False, redirect_to="/indexs")
def index():
    if not session.get("user"):
        return redirect("/")
    return f"Hello {USER[‘username‘]} 小哥"   # Python3.6的新特性f“{变量名}”

@app.route("/indexs")
def indexs():
    return "大家好,我是渣渣辉"

(6).subdomain: 子域名前缀subdomian="zm" 这样写可以得到zm.niub.com前提是

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

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

@app.route("/info",subdomain="DragonFire")
def student_info():
    return "Hello Old boy info"

# 访问地址为:  DragonFire.oldboy.com/info
# 必须得有一个线上服务器

2.动态参数路由

@app.route("/indexs/<int:id>")
def indexs(id):
    print(id)
    return "大家好,我是渣渣辉"

<int:nid> 就是在url后定义一个参数接收,但是这种动态参数路由,在url_for的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常

3.路由正则

一般不用,如果有特殊需求,不怕麻烦的话,这个东西还是挺好用的,前提是你的正则玩儿的很牛

原文地址:https://www.cnblogs.com/rixian/p/10279295.html

时间: 2024-10-09 06:16:19

Flask中的路由系统的相关文章

第六篇 Flask中的路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道多少? 一.@app.route() 装饰器中的参数 methods :当前 url 地址,允许访问的请求方式 @app.route("/info", methods=["GET", "POST"]) d

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 中路由系统

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

Flask第六篇 Flask中路由系统

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

Django进阶(路由系统、中间件、缓存、Cookie和Session

路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage), url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}), 2.根据app对路由规则进行一次分类 rl(r'^web/',include('web.urls')), 1.每个路由规则对应

路由系统

路由系统 根据Django约定,一个WSGI应用里最核心的部件有两个:路由表和视图.Django框架 的核心功能就是路由:根据HTTP请求中的URL,查找路由表,将HTTP请求分发到 不同的视图去处理: 路由系统分类很多,常见的有基本单一路由,正则路由,带额外参数路由,二层三层路由还有通过反射机制来完成的动态路由. 1.单一路由 url(r'^index$', views.index), 2.基于正则的路由 url(r'^index/(\d*)', views.index), url(r'^ma

深入理解 react-router 路由系统

范洪春 在 web 应用开发中,路由系统是不可或缺的一部分. 在浏览器当前的 URL 发生变化时,路由系统会做出一些响应,用来保证用户界面与 URL 的同步. 随着单页应用时代的到来,为之服务的前端路由系统也相继出现了. 有一些独立的第三方路由系统,比如 director,代码库也比较轻量. 当然,主流的前端框架也都有自己的路由,比如 Backbone.Ember.Angular.React 等等. 那 react-router 相对于其他路由系统又针对 React 做了哪些优化呢? 它是如何利