zoukankan      html  css  js  c++  java
  • django获取请求参数

    1.获取URL路径中的参数

    需求:假设用户访问127.0.0.1/user/1/2,你想获取1,2。应该怎么操作呢?

    (1)未命名参数(位置参数)

    # 在项目下的urls.py下增加设置:
    url(r'^user/(d+)/(d+)$',views.index)
    
    # 在user.views的index视图中:
    def index(request,a,b):            # 接受的参数按顺序的
        return HttpResponse("获得数据 %s %s"%(a,b))

    (2)命名参数(关键字参数)

    # 在项目下的urls.py下增加设置:
    url(r'^user/(?P<category>d+)/(?P<id>d+)$',views.index)
    
    # 在user.views的index视图中:
    def index(request,id,category):            # 接受的参数可以不用按顺序的
        return HttpResponse("获得数据 %s %s"%(category,id))

    输出结果均是  获得数据 1 2

    2.获取查询字符串

    需求:获取127.0.0.1:8000/user?id=1&pid=99的查询字符串的值

    # 在项目下的urls.py下增加设置:
    url(r'^user/$',views.index)
    
    # 在user.views的index视图中:
    def index(request):
        id = request.GET.get("id")
        pid = request.GET.get("pid")
        return HttpResponse("获得数据 %s %s"%(id,pid))

    注意:查询字符串的获取与请求方式无关:不管是 GET 还是 POST请求,都可以通过request.GET 属性来获取!!!

    3.获取表单数据

    用postman发送一个表单请求。

    def index(request):
        id = request.POST.get("id")
        pid = request.POST.get("pid")
        return HttpResponse("获得数据 %s %s"%(id,pid))

    注意:request.POST 只能用来获取POST方式的请求体表单数据!

    4.获取非表单类型

    • request.body属性:获取非表单类型的请求体数据,如:JSON、XML等,获取到的数据类型为bytes类型
    • 获取数据后,自己解析数据取出参数
    def index(request):
        json_str = request.body
        json_str = json_str.decode()  # python3.6及以上不用这一句代码
        dict_data = json.loads(json_str)  # loads把str转换为dict,dumps把dict转换为str
        id = dict_data.get("id")
        pid = dict_data.get("pid")
        return HttpResponse("获得数据 %s %s"%(id,pid))

    5.获取请求头的内容

    常见的请求头如下:

    • CONTENT_LENGTH – The length of the request body (as a string).
    • CONTENT_TYPE – The MIME type of the request body.
    • HTTP_ACCEPT – Acceptable content types for the response.
    • HTTP_ACCEPT_ENCODING – Acceptable encodings for the response.
    • HTTP_ACCEPT_LANGUAGE – Acceptable languages for the response.
    • HTTP_HOST – The HTTP Host header sent by the client.
    • HTTP_REFERER – The referring page, if any.
    • HTTP_USER_AGENT – The client’s user-agent string.
    • QUERY_STRING – The query string, as a single (unparsed) string.
    • REMOTE_ADDR – The IP address of the client.
    • REMOTE_HOST – The hostname of the client.
    • REMOTE_USER – The user authenticated by the Web server, if any.
    • REQUEST_METHOD – A string such as "GET" or "POST".
    • SERVER_NAME – The hostname of the server.
    • SERVER_PORT – The port of the server (as a string).

    获取请求头内容的用META

    示例:

    def index(request):
        ip = request.META.get("REMOTE_ADDR")
        return HttpResponse("你的ip地址是%s"%ip)

     

    6.获取自定义请求头的内容

    用postman增加一个自定义的请求头,key=id,value=1。那么应该怎么取呢?

    代码如下:

    def index(request):
        id = request.META.get("HTTP_ID")
        return HttpResponse("你的id:%s"%id)

    注意:获取自定义的请求头属性值时,需要添加前缀 HTTP_ 并转成大写,作为键来获取值

    附录(获取各种请求参数的方法):

    AttributeDescription
    path 请求页面的全路径,不包括域名端口参数。例如: /users/index
    method 一个全大写的字符串,表示请求中使用的HTTP方法,常用值:GET, POSTDELETEPUT等。以下三种为 GET 请求:
    • form 表单默认提交(或者method指定为get)
    • 在浏览器中输入地址直接请求
    • 网页中的超链接(a标签)
    user
    • 已登录:AbstractUser对象;
    • 未登录:AnonymousUser对象;
      判断是否已经登录: request.user.is_authenticated(),返回true表示已经登录
    GET 类似字典的 QueryDict 对象,包含url中所有的查询字符串参数
    POST 类似字典的 QueryDict 对象,包含 POST 请求的所有键值对参数(表单数据)
    body 获取原始的请求体数据,获取到的数据为bytes类型
    FILES 一个类似于字典的对象,包含所有的上传文件
    META python 字典类型,封装了请求头headers中的数据
    REMOTE_ADDR – 客户端的IP地址 
    REQUEST_METHOD — 一个字符串,例如"GET" 或"POST
    CONTENT_TYPE – 请求的正文的MIME 类型
    注意:对于用户添加到请求头中的键值,Django会给键加上前缀 HTTP_再转换成大写,再把键值保存到request.META中 
    COOKIES 一个标准的 python 字典,包含所有的 cookies, 键和值都是字符串
    session 可读可写的类似字典的对象: django.contrib.sessions.backends.db.SessionStore
    Django 提供了 session 模块,默认就会开启用来保存 session 数据
  • 相关阅读:
    spring cloud 和 阿里微服务spring cloud Alibaba
    为WPF中的ContentControl设置背景色
    java RSA 解密
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    Hystrix 配置参数全解析
    spring cloud 2020 gateway 报错503
    Spring Boot 配置 Quartz 定时任务
    Mybatis 整合 ehcache缓存
    Springboot 整合阿里数据库连接池 druid
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
  • 原文地址:https://www.cnblogs.com/chichung/p/9873425.html
Copyright © 2011-2022 走看看