zoukankan      html  css  js  c++  java
  • 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')是不对的。

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

  • 相关阅读:
    eclipse中的Invalid text string (xxx).
    在jsp文件中出现Unknown tag (c:out)
    eclipse 界面复原
    ecilpse 纠错插件
    Multiple annotations found at this line:- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Port 8080 required by Tomcat v9.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port.
    调用第三方https接口
    调用第三方http接口
    创建带值枚举
    spring整合redis之Redis配置文件
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8649094.html
Copyright © 2011-2022 走看看