【Flask】路由和URL

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 【Flask】路由和URL,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、路由

@app.route('/index')		#路由
def view_function():		#视图函数
	return "hello kobe"		#响应

在程序中获取路由信息
在应用中的url_map属性中保存着整个Flask应用的路由映射信息,可以通过读取这个属性获取路由信息

print(app.url_map)

如果想在程序中遍历路由信息,可以采用如下方式

for rule in app.url_map.iter_rules():   
		print('name={} path={}'.format(rule.endpoint, rule.rule))

二、需求

通过访问/地址,以json的方式返回应用内的所有路由信息
实现

@app.route('/')
def route_list():
	rules_iterator=app.url_map.iter_rules()
	return json.dumps({rule.endpoint:rule.rule for rule in rules_iterator})

三、动态路由(URL路径参数)

动态路由就是把请求参数作为路由中url的一部分

例如,有一个请求访问的接口地址为/users/123,其中123实际上为具体的请求参数,表明请求123号用户的信息。此时如何从url中提取出123的数据?

Flask不同于Django直接在定义路由时编写正则表达式的方式,而是采用转换器语法:

@app.route('/users/<user_id>')
def user_info(user_id):
	print(type(user_id))
	return 'hello user {}'.format(user_id)

此处的<>即是一个转换器,默认为字符串类型,即将该位置的数据以字符串格式进行匹配、并以字符串为数据类型类型、 user_id为参数名传入视图。

转换器:负责提取动态url中的id数据,并且把id数据传给视图函数
案例1:

from flask import Flask,json

#static_url_path:相当于路由
app = Flask(__name__,static_url_path='/zhilong',static_folder='static')   #初始化Flask项目的服务


@app.route('/')
def hello_world():
    return "hello world"

@app.route('/user/<int:user_id>')   #动态路由就是把请求参数作为路由中url的一部分
def users(user_id):      #转换器:负责提取动态url中的id数据,并且把id数据传给视图函数
    print(type(user_id))
    return "当前访问的用户是:用户{}".format(user_id)


if __name__ == '__main__':
    #0.0.0.0:代表当前系统中的所有的ip地址 默认端口是5000,flask的debug模式:把错误信息显示在页面中
    app.run(host='0.0.0.0',port=8080,debug=False)

访问路径为:http://192.168.112.217:8080/user/24
在这里插入图片描述
案例2:

from flask import Flask,json

#static_url_path:相当于路由
app = Flask(__name__,static_url_path='/zhilong',static_folder='static')   #初始化Flask项目的服务


@app.route('/')
def hello_world():
    return "hello world"

@app.route('/user/<int(min=1):user_id>')   #动态路由就是把请求参数作为路由中url的一部分
def users(user_id):      #转换器:负责提取动态url中的id数据,并且把id数据传给视图函数
    print(type(user_id))
    return "当前访问的用户是:用户{}".format(user_id)


if __name__ == '__main__':
    #0.0.0.0:代表当前系统中的所有的ip地址 默认端口是5000,flask的debug模式:把错误信息显示在页面中
    app.run(host='0.0.0.0',port=8080,debug=False)

访问路径:http://192.168.112.217:8080/user/-3,页面404,
原因@app.route(’/user/<int(min=1):user_id>’)中min=1设置为user_id最小为1,当url中传入的值小于1时,会报404
在这里插入图片描述

四、Flask也提供其他类型的转换器

DEFAULT_CONVERTERS = {    
			'default':          UnicodeConverter,    
			'string':           UnicodeConverter,    
			'any':              AnyConverter,    
			'path':             PathConverter,    
			'int':              IntegerConverter,    
			'float':            FloatConverter,    
			'uuid':             UUIDConverter,
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/123420.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!