前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask之路由注册(二)

Flask之路由注册(二)

作者头像
无涯WuYa
发布2019-11-24 18:09:26
9580
发布2019-11-24 18:09:26
举报

在第一节中,启动Flask的程序后,在浏览器中访问http:localhost//5000/就会显示Hello World,也就是说,在WEB的应用程序里,客户端和服务器上的Flask程序交互简单的来说可以总结为:

1、用户在浏览器输入请求地址

2、Flask程序接收用户请求的地址并且对请求的地址进行解析

3、依据请求的地址URL找到对应的视图函数,视图函数进行处理

4、视图函数接收到处理请求后,生成响应,返回给客户端,也就是浏览器

5、浏览器接收到响应后对信息进行解析,将信息展示显示在页面中

在Flask的应用程序中,是需要在视图函数前加app.route()装饰器,并传入URL规则作为参数,这样URL就与视图函数之间建立起了关联。编写视图函数Hello,它的源码为:

代码语言:javascript
复制
from flask import Flask

app = Flask(__name__)
app.config.from_pyfile('config.py',silent=True)

@app.route('/')
def hello_world():
    return 'Hello World!'
@app.route('/index')
def index():
    return 'Hello 无涯'
if __name__ == '__main__':
    app.run()

在如上的视图函数中,app.route('/index')装饰器是把地址/index与index()视图函数绑定起来,当用户访问这个URL的时候就会触发index()的函数。执行视图函数后,视图函数返回的值将作为响应的主体,也就是说把返回的响应的主体展示在浏览器窗口的HTML的页面。

在实际的工作中,视图函数的路由不会如上面的那么简单,在视图函数中都是有参数的,如要实现打印“您好,无涯”,把无涯当作一个参数,那么需要在视图函数中增加一个name的参数,这个参数随着调用的时候,输入不同的值显示不同的结果,那么要实现这样的效果,它的源码为:

代码语言:javascript
复制
from flask import Flask

app = Flask(__name__)
app.config.from_pyfile('config.py',silent=True)

@app.route('/')
def hello_world():
    return 'Hello World!'
@app.route('/index/<name>')
def index(name):
    return 'Hello {0}'.format(name)

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

如果在路由中需要指定请求的参数它的数据类型,如int类型,那么就需要在注册路由的时候指定请求参数的类型,修改后的视图函数为:

代码语言:javascript
复制
@app.route('/index/<int:articleID>')
def index(articleID):
    return '文章ID: {0}'.format(articleID)

在GET的请求中,经常基于业务的需要,需要通过参数来当传递请求参数的过程,如写一个搜索的

案例代码,它的视图函数源码为:

代码语言:javascript
复制
from flask import Flask,request

app = Flask(__name__)
app.config.from_pyfile('config.py',silent=True)

@app.route('/s/')
def so():
    wd=request.args.get('wd')
    return '通过查询搜索的关键字为:{0}'.format(wd)

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

在如上的源码中可以看到,首先需要导入request,然后在视图函数中,在GET的请求中获取查询的关键字,然后把查询的关键字打印出来。

还有另外一种场景是返回多个URL的地址,依据不同的URL显示不同的信息,如输入博客的地址返回博客的信息,依据用户的信息返回用户的信息。增加新的视图函数,它的源码为:

代码语言:javascript
复制
@bp.route('/<any(blog,user):url_path>/<uid>/')
def res(url_path,uid):
   if url_path=='blog':
      return '博客的首页详细信息为{0}'.format(uid)
   elif url_path=='user':
      return '首页详细信息为{0}'.format(uid)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档