• flask第十三篇——url注意事项


    先和大家说一下常用的请求方法

    get:只是从服务器获取数据,不会对服务器的状态或数据产生任何影响;

    get方法的参数是放在URL中传递的。

    post:会对服务器的状态或数据产生影响;通过body形式进行数据传递。

    现在如果我们希望只能通过get方法才能访问一个url(或者说调用一个函数)该怎么办呢?看下面的代码:

    # coding: utf-8

    from flask import Flask
    from werkzeug.routing import BaseConverter
    import flask app = Flask(__name__)  # type: Flask
    app.debug = True


    # 根目录
    @app.route('/', methods=['GET'])
    def hello_world():    return 'Hello World!'


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

    上面在app.route()中传入了一个methods参数,传的参数是数组(或元组),这样就对hello_world函数的访问进行了限制——只能使用get方法才能请求到。

    或者你也可以在methods方法里传入两个参数methods=['GET', 'POST']这样该方法就可以通过两种方式请求到了。如果不传递methods参数,那么默认是只有GET方法的。

    URL的唯一性

    之前已经有朋友问到了,就是@app.route('/list/')这个装饰器里list后面的/是不是必须传的,其实大家可以自己试一下,现在我们新定义一个函数:

    @app.route('/list')
    def mylist():    return u'没有/的list'

    然后访问该函数,可以看到当我们访问127.0.0.1/list/时是访问不到的:

    但是我们访问127.0.0.1/list是可以访问到的:

    但是如果我们这样写:

    @app.route('/list/')
    def mylist():    return u'有/的list'

    我们访问127.0.0.1/list,我们发现也是可以访问到的,因为浏览器自动给你加上/(重定向)了。所以建议大家在定义url的时候都加上后面的斜杠/。

    还有一点需要和大家说明,就是大家如果修改端口号app.run(port=2000)这种操作时,port后面传的端口号必须是Integer类型的,就是说必须是整型,这样传app.run(port='2000')是不对的。

    请关注公众号:自动化测试实战,查看清晰排版

  • 相关阅读:
    爆打团队 2016.04.12 站立会议
    爆打团队 2016.04.11 站立会议
    爆打团队 2016.04.10 站立会议
    爆打小组 4.3日站立会议
    随机生成题目的代码分析
    爆打 第二周第二次站立会议(2016.3.29)
    爆打小组,四则运算,算法实现
    add some template for ec-final
    2014_acmicpc_shanghai_google
    matrix_world_final_2013
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8649094.html
Copyright © 2020-2023  润新知