flask框架:路由

视图函数中路由的说明

1.利用methods限制访问方式
render_template:返回页面
request:一切浏览器请求的内容都封装到request对象中
request.method:来判断访问方式
method:设置请求访问方式


from flask import Flask,render_template,request

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method=='POST':
        return '注册成功了'
    return render_template('login.html')
#同一个路由可以装饰多个视图,然后按照先后顺序输出
@app.route('/hello',methods=['POST'])
def hello1():
    return 'hello1'
@app.route('/hello',methods=['GET'])
def hello2():
    return 'hello2'
  if __name__ == '__main__':
        app.run()

2. 可以通过url_map属性来查看flask中的整体路由信息

from flask import Flask,render_template,request

app=Flask(__name__)

@app.route('/index')
def index():
    return 'hello world'
    if __name__ == '__main__':
    
    print(app.url_map)
        app.run()
    """
  
         

打印结果:

  Map(
         [ index>,
         ' (OPTIONS, HEAD, GET) -> static>]
         )

如果存在 GET ,那么也会替你自动地添加 HEAD,无需干预。它会确保遵照 HTTP RFC(描述 HTTP 协议的文档)处理 HEAD 请求,所以你可以完全忽略这部分的 HTTP 规范。同样,自从 Flask 0.6 起, 也实现了 OPTIONS 的自动处理。

你不知道一个 HTTP 方法是什么?不必担心,这里会简要介绍 HTTP 方法和它们为什么重要:

HTTP 方法(也经常被叫做“谓词”)告知服务器,客户端想对请求的页面 做 些什么。下面的都是非常常见的方法:

  • GET
    浏览器告知服务器:只 获取 页面上的信息并发给我。这是最常用的方法。
  • HEAD
    浏览器告诉服务器:欲获取信息,但是只关心 消息头 。应用应像处理 GET 请求一样来处理它,但是不分发实际内容。在 Flask 中你完全无需 人工 干预,底层的 Werkzeug 库已经替你打点好了。
  • POST
    浏览器告诉服务器:想在 URL 上 发布 新信息。并且,服务器必须确保 数据已存储且仅存储一次。这是 HTML 表单通常发送数据到服务器的方法。
  • OPTIONS
    给客户端提供一个敏捷的途径来弄清这个 URL 支持哪些 HTTP 方法。 从 Flask 0.6 开始,实现了自动处理。

3.多个路由修饰一个视图
路由解析时,是从里到外

from flask import Flask,render_template,request

app=Flask(__name__)
@app.route('/hi1')
@app.route('/hi2')#装饰器从里到外
def hi():
    return 'hi'
if __name__ == '__main__':
   app.run()

flask框架:路由_第1张图片
在这里插入图片描述
在这里插入图片描述
4. 使用url_for进行反解析和重定向

from flask import Flask,render_template,request,redirect,url_for
app=Flask(__name__)
#重定向
@app.route('/login2',methods=['GET','POST'])
def login2():
    if request.method=='POST':
      #1.第一种方式:使用路由
      # return redirect('/index')
      #2.第二种方式:使用视图函数名称
       url=url_for('index')
       return redirect(url)
    return render_template('login.html')
    if __name__ == '__main__':
       app.run()
    

7. 动态路由

获取路由中传递的参数,路由传递的参数默认当做string处理
flask框架:路由_第2张图片

from flask import Flask

app=Flask(__name__)

#127.0.0.1:5000/index/123
#传递的参数默认是字符串类型
@app.route('/index/')
def index(num):
    print(type(num))#
    return 'index....,num的值:%s'% num

#指定接收数据类型  int
@app.route('/index2/')
def index2(num):
    print(type(num))
    return 'index2...,num的值是:%s'% num

#path :可以接受带/的参数
@app.route('/index3/')
def index3(num):
    return 'index3..,num的是:%s'% num


if __name__ == '__main__':
    app.run()

你可能感兴趣的:(Flask框架,路由,flask,框架)