• Python测试开发flask 2. URL与函数的映射


    URL与函数的映射:

    从之前的app.py文件中,我们已经看到,一个URL要与执行函数进行映射,使用的是@app.route装饰器。

    @app.route装饰器中,可以指定URL的规则来进行更加详细的映射,比如现在要映射一个文章详情的URL,文章详情的URL/article/id/,id有可能为1、2、3…,那么可以通过以下方式:

    @app.route('/article/<id>/')
    def article(id):
       return '此时是第 %s 页 article detail' % id

    其中<id>,尖括号是固定写法,语法为<variable>variable默认的数据类型是字符串。如果需要指定类型,则要写成<converter:variable>,其中converter就是类型名称,可以有以下几种:

    • string: 默认的数据类型,接受没有任何斜杠/的字符串。

    • @app.route('/article/<number>')
      def article_list(number):
         return '%s article detail'%number
    • int:  数据类型只能传递'int'类型

    • @app.route('/page/<int:artiole_id>/')
      def article_detail(artiole_id):
         return '您请求的文章是:%s'%artiole_id
    • float: 数据类型只能传递'float'类型

    • @app.route('/page/<float:artiole_id>/')
      def article_detail(artiole_id):
         return '您请求的文章是:%s'%artiole_id
    • path: 和string类似,都是可以接收任意的字符串,但是'path'可以接收路径,也就是说可以包含传递斜杠/

    • @app.route('/page/<path:test>/')
      def article_detail(test):
         return '您请求的文章是:%s'%test
    • uuid: uuid类型的字符串,只能接收符合uuid 的字符串,uuid是一个全宇宙都唯一的字符串,一般可以用来作为表的主键。

    • @app.route('/user/<uuid:user_id>/')
      def user_detail(user_id):
         return '用户个人中心页面:%s'%user_id
    • any:可以指定多种路径,这个通过一个例子来进行说明:

    • @app.route('/<any(user_1,user_2):url_path>/<id>')
      def detail(url_path,id):
          if url_path == 'user_1':
              return 'user_1个人中心, %s' %id
          else:
              return 'user_2个人中心, %s' %id

      detail这个函数可以接受两个URL,一个是/user_1/,另一个是/user_2/。并且,一定要传url_path参数,当然这个url_path的名称可以随便。

    如果不想定制子路径来传递参数,也可以通过传统的?=的形式来传递参数,例如:/article?id=xxx,这种情况下,可以通过request.args.get('id')来获取id的值。如果是post方法,则可以通过request.form.get('id')来进行获取。代码如下

    # 导入request模块
    from flask import request
    @app.route('/search/')
    def seacher():
        # wd = request.args.get('wd',type=str,default=None) # get
        wd = request.form.get('wd',type=str,default=None) # post
        return '您通过查询字符串的方式传递的参数是:%s'%wd
  • 相关阅读:
    前后台分离--概念相关
    dubbo概述
    memcache
    分布式系统事务
    2018书单索引
    Lucene原理之概念
    java 通用对象排序
    LightOJ1214 Large Division —— 大数求模
    LightOJ1336 Sigma Function —— 质因子分解、约数和为偶数
    LightOJ1245 Harmonic Number (II) —— 规律
  • 原文地址:https://www.cnblogs.com/Teachertao/p/16274008.html
Copyright © 2020-2023  润新知