首页 > 其他分享 > 软件测试|一文教你flask路由配置

软件测试|一文教你flask路由配置

时间:2023-02-12 18:31:44浏览次数:42  
标签:__ return flask app subpath URL route 路由 软件测试

flask路由配置

Flask中通过使用route装饰器实现路由访问功能,其路由匹配URL规则基于Werkzeug的路由模块。该模块基于Apache及更早的HTTP服务器主张,希望保证优雅且唯一的URL。其使用格式如下:

 软件测试|一文教你flask路由配置_字符串

from flask import Flask
# 导入 Flask 类

app = Flask(__name__)
# 创建类的实例


@app.route("/hello")
# 使用 route() 装饰器来告诉 Flask 触发函数 的 URL
def hello_world():
return "<p>Hello, World!</p>"


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

如上,可以通过访问:​​http://127.0.0.1:5000/hello.结果如下图所示:​

 软件测试|一文教你flask路由配置_字符串_02

URL规则

route装饰器基于Werkzeug规则实现,我们可以通过把URL的一部分标记为 <variable_name> 就可以在 URL 中添加变量,也可以通过使用<converter:variable_name>添加一个转换器来指定规则,支持的converter转换器类型如下:

  • string:接受任何没有斜杠 “/” 的文本(默认类型)
  • int:接受整数
  • float:接受浮点数
  • path:类似默认string,但也接受斜杠
  • uuid:只接受uuid字符串
  • any:可以指定多种路径,但是需要传入参数

示例代码如下:

from flask import Flask
from markupsafe import escape
app = Flask(__name__)

# URL没有尾部斜杠,访问这个URL就会得到一个 404
@app.route('/hello')
def hello():
return 'Hello, World'

# 访问没有斜杠结尾的URL时会自动进行重定向,帮您在尾部加上一个斜杠
@app.route('/projects/')
def projects():
return '项目页面'

# path变量路由,支持get、post方法
@app.route('/user/<username>', methods=['GET', 'POST'])
def profile(username):
return f'{username}的个人页面'

# 指定path参数为int类型,如:/post/123
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'文章编号 {post_id}'

# 展示/path/之后的子路径地址
@app.route('/path/<path:subpath>')
def show_subpath(subpath):

return f'子路径 {escape(subpath)}'

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

启动服务后,访问的记录如下图所示:

 软件测试|一文教你flask路由配置_flask_03

URL 构建

url_for()可以用于构建指定函数的URL,其使用格式:url_for(<function-name>,dicts),且url_for会自动换衣特殊字符和unicode编码数据,而无需自己构建。

from flask import url_for,Flask
from markupsafe import escape
app = Flask(__name__)

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

@app.route('/getUserById')
def getUser(id):
return f'当前用户Id:{id}'

@app.route('/user/<username>')
def user(username):
return f'访问者:{username}'

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
return f'子路径 {escape(subpath)}'

with app.test_request_context():
print(url_for('hello'))
print(url_for('getUser',id=1000))
print(url_for('user',username="穆勒"))
print(url_for('show_subpath', subpath='subpath/b'))

运行结果如下图所示:

 软件测试|一文教你flask路由配置_斜杠_04


标签:__,return,flask,app,subpath,URL,route,路由,软件测试
From: https://blog.51cto.com/u_15640304/6052138

相关文章

  • java——spring boot集成RabbitMQ——路由模式——应用场景
    如果多个队列都绑定了同一个交换机,通过路由key,指定消息到哪个消息队列     ......
  • Flask算pin rce
    前提条件:Debug开启高版本importhashlibfromitertoolsimportchainprobably_public_bits=['root'#/etc/passwd'flask.app',#默认值'Flask......
  • Laravel — P54:路由组 — 中间件和控制器
    我想在​​web.php​​​文件中提及的最后一个主题是路由组。考虑到还没有触及​​api.php​​也经常使用的文件,还没有完全讨论完路由。将中间件应用于组要将中间件应用于特......
  • Laravel — P52:显式路由模型绑定
    什么时候需要显式绑定模型与使用Laravel的隐式绑定?我经常发现的一个常见问题没有适当或足够简单的回答。因此,我认为它没有像应有的那样频繁使用。在前面的示例中,我们使用......
  • Laravel — P51:路由模型隐式绑定
    现在我们已经熟悉了依赖注入,我们还能用这个概念做什么呢?我们能否像模型一样将我们的模型“注入”​​User​​​到我们的路由中,然后在不实例化​​User​​模型的情况下利用......
  • Laravel — P50:路由和依赖注入
    我们在前几篇文章中介绍了一些依赖注入主题,但现在我们想开始更具体一些。我们终于进入了Laravel的更高级部分,并将开始关注Laravel特定领域内的特定主题。接下来的几篇文......
  • Laravel — P55:路由中的软删除模型
    完成这样的教程系列并不像看起来那么简单。您想按特定顺序涵盖主题,但每次谈到一个新主题时,您都会意识到您需要涵盖其他内容才能做到这一点。例如,在学习了Laravel中一些比......
  • vue 主路由和子路由
    路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about按钮,页面中就要显示about的内容。Home按钮=>home内容,about按钮=......
  • SpringCloudGateway服务路由
    1使用1.1依赖首先要引入spring-cloud-starter-gateway的依赖:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta......
  • 前端-vue基础96-vue router嵌套路由
      <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Documen......