Python中的Get和Post方法(Flask)

时间:2015-06-26 19:57:36

标签: python http post flask get

我是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)

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

<div>
  {{s_abc}} 
</div>

我的问题是:

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

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

  3. 感谢。

2 个答案:

答案 0 :(得分:7)

flask的默认值为public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tvX.setText("" + (mSeekBarX.getProgress() + 1)); tvY.setText("" + (mSeekBarY.getProgress())); ArrayList<BarEntry> yVals3 = new ArrayList<BarEntry>(); TimeListDatabaseHelper db = new TimeListDatabaseHelper(this); for (int i = 0; i < mSeekBarX.getProgress() + 1; i++) { Cursor c = db.getTimeRecordList(); if (c != null && c.getCount() > 0) { c.moveToFirst(); for (int count = 0; count < c.getCount(); count++) { yVals3.add(new BarEntry(c.getInt(0), count)); c.moveToNext(); } c.close(); for (Object obj1: yVals3) { Log.i("mSeekBarX1", obj1.toString()); } } ArrayList<String> xVals = new ArrayList<String>(); for (int i = 0; i < mSeekBarX.getProgress() + 1; i++) { xVals.add((int) yVals3.get(i).getVal() + ""); } BarDataSet set1 = new BarDataSet(yVals3, "Data Set"); set1.setColors(ColorTemplate.VORDIPLOM_COLORS); set1.setDrawValues(false); ArrayList<BarDataSet> dataSets = new ArrayList<BarDataSet>(); dataSets.add(set1); BarData data = new BarData(xVals, dataSets); mChart.setData(data); mChart.invalidate(); } } 。您可以使用GET更改:

methods

阅读文档:Flask 1.0.2 documentation

  

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

答案 1 :(得分:3)

默认值为GETPOST仅在abc.html有表单且用户提交s_abc的值时才适用。在你的情况下,你正在生成它并渲染html。

如果您是新手,请查看完整的教程。它将向您展示如何创建表单和接收数据:

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