sardine2 / python

Life is short, I need python.
0 stars 0 forks source link

ch4 request #19

Open sardine2 opened 7 years ago

sardine2 commented 7 years ago

request The current request method is available by using the method attribute. To access form data (data transmitted in a POST or PUT request) you can use the form attribute.

HTTP请求的流程:

步骤1:浏览器首先向服务器发送HTTP请求,请求包括:

方法:GET还是POST,GET仅请求资源,POST会附带用户数据; 路径:/full/url/path;

域名:由Host头指定:Host: www.xxxccc.cn

以及其他相关的Header;

如果是POST,那么请求还包括一个Body,包含用户数据。

步骤2:服务器向浏览器返回HTTP响应,响应包括:

响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误;

响应类型:由Content-Type指定;

以及其他相关的Header;

通常服务器的HTTP响应会携带内容,也就是有一个Body,包含响应的内容,网页的HTML源码就在Body中。

步骤3:如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1、2。

sardine2 commented 7 years ago

获取请求数据的方法有几种:

  1. request.args.get('key') # 获取URL中的参数值

    To access parameters submitted in the URL (?key=value) you can use the args attribute: searchword = request.args.get('key', '')

  2. request.form['key'] # 获取表单中填写的值 Flask通过request.form['name']来获取表单的内容。

  3. request.get_data() # 获取


我的理解: GET 用 request.args.get('key') 。因为get 在url直接发送参数。 POST 用 request.form['key']。因为post 发送表单,获取表单中的值。

sardine2 commented 7 years ago

request.form.keys() 让我很困惑,不知同学们是怎么找到用法的。

if request.method == 'POST':
        if 'query' in request.form.keys():
            city_name = request.form['city_name']
            weather = query_weather(city_name)
        elif 'history' in request.form.keys(): #
            his_info = show_history()
            return render_template('index.html',info=his_info)
        elif 'help' in request.form.keys(): #
            help_info = show_help()
            return render_template('index.html',info=help_info)
    return render_template('index.html',info=weather)