Python中的Get和Post方法(Flask)

cod*_*un3 2 python post get http flask

我是Flask和Web开发的新手,我正在尝试创建一个简单的应用程序,在服务器上生成一个整数数组并发送给客户端.以下是app.py中的一些示例(工作)代码:

from flask import Flask, render_template, request, url_for

import random


app = Flask(__name__)


@app.route('/')
def form():
    s_abc = [random.random() for _ in range(40)]
    return render_template('abc.html', s_abc=s_abc)

if __name__ == '__main__':
  app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

这是一个(工作)abc.html片段:

<div>
  {{s_abc}} 
</div>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 即使没有GET/POST HTTP方法,这如何工作?我认为服务器和客户端之间的通信需要获取/发布http方法(如下所述:http://www.tutorialspoint.com/http/http_methods.htm).但是,即使我没有写这样的东西,我的代码也能正常工作:

    @app.route('/', methods=['GET'])
    
    Run Code Online (Sandbox Code Playgroud)
  2. 有没有办法重写这个,以便它使用POST?显然,POST更适合处理敏感数据,如下所述:http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

谢谢.

Reu*_*ani 7

烧瓶的默认值是GET.你可以用它methods来改变:

@app.route('/', methods=['GET', 'POST'])
Run Code Online (Sandbox Code Playgroud)

阅读文档:Flask 1.0.2文档

Web应用程序在访问URL时使用不同的HTTP方法.在使用Flask时,您应该熟悉HTTP方法.默认情况下,路由仅响应GET请求.您可以使用route()装饰器的methods参数来处理不同的HTTP方法.


Sub*_*due 6

默认值为GET. POST仅当abc.html具有表单并且用户提交 的值时才适用s_abc。在您的情况下,您正在生成它并呈现 html。

如果您不熟悉 Flask,您应该查看这个完整的教程。它将向您展示如何创建表单和接收数据:

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms