• django中HttpRequest请求


    视图的第一个参数必须是HttpRequest对象

    在视图函数中,接收的request有如下属性:

    • path:一个字符串,表示请求的页面的完整路径,不包含域名。
    • method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。
      • 在浏览器中给出地址发出请求采用get方式,如超链接。
      • 在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求。
    • encoding:一个字符串,表示提交的数据的编码方式。
      • 如果为None则表示使用浏览器的默认设置,一般为utf-8。
      • 这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。
    • GET:一个类似于字典的对象,包含get请求方式的所有参数。
    • POST:一个类似于字典的对象,包含post请求方式的所有参数。
    • FILES:一个类似于字典的对象,包含所有的上传文件。
    • COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。
    • session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。

     

    QueryDict对象

    GET和POST请求中,视图request获取的QueryDic对象:

    • 定义在django.http.QueryDict
    • HttpRequest对象的属性GET、POST都是QueryDict类型的对象
    • 与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况
    • 方法get():根据键获取值
    • 如果一个键同时拥有多个值将获取最后一个值
    • 如果键不存在则返回None值,可以设置默认值进行后续处理
    dict.get('',默认值)
    #可简写为
    dict['']
    • 方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值
    • 如果键不存在则返回空列表[],可以设置默认值进行后续处理
    dict.getlist('',默认值)

    GET属性

    请求格式:在请求地址结尾使用?,之后以“键=值”的格式拼接,多个键值对之间以&连接。

    例:网址如下

    http://www.itcast.cn/?a=10&b=20&c=python
    

    其中的请求参数为:

    a=10&b=20&c=python
    
    • 分析请求参数,键为'a'、'b'、'c',值为'10'、'20'、'python'。
    • 在Django中可以使用HttpRequest对象的GET属性获得get方方式请求的参数。
    • GET属性返回QueryDict类型的对象,键和值都是字符串类型。
    • 键是开发人员在编写代码时确定下来的。
    • 值是根据数据生成的。

    POST属性

    使用form表单请求时,method方式为post则会发起post方式的请求,需要使用HttpRequest对象的POST属性接收参数,POST属性返回QueryDict类型的对象。

    问:表单form如何提交参数呢?

    答:控件name属性的值作为键,value属性的值为值,构成键值对提交。

    • 如果控件没有name属性则不提交。
    • 对于checkbox控件,name属性的值相同为一组,被选中的项会被提交,出现一键多值的情况。
    • 键是控件name属性的值,是由开发人员编写的。
    • 值是用户填写或选择的。

    接收POST和GET请求获取数据的方式:

    #接收请求参数
    def show_reqarg(request):
        if request.method == 'GET':
            a = request.GET.get('a') #获取请求参数a
            b = request.GET.get('b') #获取请求参数b
            c = request.GET.get('c') #获取请求参数c
            return render(request, 'booktest/show_getarg.html', {'a':a, 'b':b, 'c':c})
        else:
            name = request.POST.get('uname') #获取name
            gender = request.POST.get('gender') #获取gender
            hobbys = request.POST.getlist('hobby') #获取hobby
            return render(request, 'booktest/show_postarg.html', {'name':name, 'gender':gender, 'hobbys':hobbys})
  • 相关阅读:
    [转载]企业级服务器设计与实现经验之系统框架(一)
    【转载】es通信框架
    【转载】企业级服务器设计与实现经验之插件系统基础篇
    阻塞队列
    [转载]ESFramework 4.0 进阶(01)-- 消息
    心跳监测器 IHeartBeatChecker
    poj2470
    poj2478
    poj2418
    poj2481
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7525647.html
Copyright © 2020-2023  润新知