02.Flask 路由

    xiaoxiao2021-03-25  135

    路由的作用

    简单的说路由就是我们打在浏览器的url的一部分,是用来寻找处理过程用的标识,如我们在浏览器中访问http://blog.csdn.net/a540366413这个链接,服务器就会寻找到/a540366413这个路由对应的处理过程,然后返回处理结果。

    Flask的路由

    在Flask中路由是用装饰器的方式来表示的。

    @app.route('/login') def login(): pass

    在上面的例子中@app.route就是用来设置路由的,如果我们在浏览器中敲入http://ip:port/login服务端就会执行login函数,login返回的处理结果就会在浏览器中显示。 注意:在路由中有个有趣的规则,当我们设置路由为/login时,我们访问/login/会返回404,但是我们如果路由设置的是/login/时,我们访问/login会自动重定向到/login/。

    多个路由对应一个处理函数

    @app.route('/') @app.route('/index') def index(): pass

    这样设置的路由访问/和/index都会执行index函数

    读取路由中的值

    使用<name>或者<type:name> type是转换器,会帮你把值转成type类型 type包含: * string 字符串 默认类(不加type就是默认为string) * int 整数 * float 浮点数 * path 也是字符串类型不过可以包含斜杠/ * any 任意类型 * uuid uuid字符串

    @app.route('/var/<var>') def getVar(var): return var @app.route('/var/<int:id>') def getId(id): return str(type(id))

    上述例子如果访问/var/aaa则会匹配getVar函数,如果访问/var/123则会匹配getId处理函数。

    路由的访问方式

    HTTP常见方法如下:

    GET:获取信息,这是最常用的方法。 HEAD:获取消息头,不分发实际内容。在 Flask 中你完全无需 人工 干预,底层的 Werkzeug 库已经替你打点好了。 POST:在URL上传新信息。 PUT:类似 POST 但是服务器可能触发了存储过程多次,多次覆盖掉旧值。 DELETE:删除给定位置的信息。 OPTIONS:给客户端提供一个敏捷的途径来弄清这个 URL 支持哪些 HTTP 方法。 从 Flask 0.6 开始,实现了自动处理。

    给路由设置访问方式:

    使用methods参数设置,如@app.route('/login',methods=['GET','POST']) 这样/login路由就支持了GET和POST方法。

    如果一个处理函数使用了多种访问方式该如何区分?

    需要从flask库导入request对象,通过request.method == “GET|POST|….”方式来判断。

    例如:

    from flask import Flask,render_template,request #... @app.route('/upload', methods=['GET','POST']) def upload(): if request.method == 'POST':#判断当前是否是POST方式的访问 return request.files['upload'].stream.read()#返回文件内容 return render_template('upload.html')#渲染模板,以后介绍

    大家可能有疑问,request.method为什么就能知道是本次访问的方式,如果一次一百个人访问不会被覆盖吗?关于这个疑问,可以查看我的另一篇blog来获取答案《Python 多进程和多线程》http://blog.csdn.net/a540366413/article/details/58589598

    构造url

    使用flask中的url_for来构造url

    from flask import url_for,Flask#导入flask和url_for app = Flask(__name__)#实例化flask @app.route('/index') #建立路由 def index(): #定义处理函数 pass with app.test_request_context(): #使用flask测试上下文,用于单元测试 print(url_for('index'))#url_for(路由对应处理函数名) 返回该路由url ''' 结果: /index '''

    重定向

    from flask import redirect, url_for #导入重定向函数和url_for方法 @app.route('/login') #login路由 def login(): pass @app.route('/index')#index路由 def index(): return redirect(url_for('login'))#重定向到login
    转载请注明原文地址: https://ju.6miu.com/read-5096.html

    最新回复(0)