【问题标题】:How to parse request in django如何在 django 中解析请求
【发布时间】:2016-03-29 14:13:04
【问题描述】:

您好,我正在制作一个网络服务器,我必须在其中点击 html 页面的一些请求并返回响应。使用 html 生成的 URL 是

http://192.168.2.253:8080/searchSMS/?KPImsgId=0&circle=&subId=&startDate=DD-MM-YYYY&endDate=DD-MM-YYYY&Username=ashish

但在服务器端我看不到请求数据。我在用 q = QueryDict(request.body) 但它显示 <QueryDict: {}>

如何找到请求中的所有参数。

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    在您的情况下,您在 url 中发送数据,因此请通过 request.GET 访问数据,如下所示:

    username = request.GET.get('Username')
    start_date = request.GET.get('startDate')
    # ... the same for all the other parameter after the `?` marque.
    

    其实request datarequest.bodyrequest.GETrequest.POST是有区别的:

    • 如果您向 django function viewclass based view 发送 POST 请求:您可以访问 request.bodyrequest.POST 中的请求数据。
    • 如果您向 Django REST Framework 发送 POST 请求:您将访问 request.data 中的数据。您也可以在 Internet request.DATA 中找到正确的信息,但在较新版本的 DRF 中已弃用它,而支持 request.data。
    • 如果您像在这种情况下在 url 中发送参数,您将访问数据表单 request.GET,如上所述。

    【讨论】:

    • 我明白你的意思,但在这种情况下如何获得 http://192.168.2.253:8080/searchCall/?startDate=DD-MM-YYYY&endDate=DD-MM-YYYY&reportingType=0&circle=0&kpi=107&kpi=121 我可以获得不止一个 kpi
    • 参数作为字典的键发送,所以如果有重复,只会考虑一个。所以要么你用不同的名字或在列表中发送它们。查看此帖子以获取有关using a list or not的更多详细信息
    • 改名后我不能在这个QueryDict(request.body)做吗。
    • request.body 仅包含 POST 请求正文中发送的数据,但不能包含 url 参数。
    • @DhiaTN 每个键只考虑一个值是不正确的。发送多个值是完全有效的;在这种情况下,您可以使用request.GET.getlist('param_name') 将它们全部作为一个列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2018-10-19
    • 2017-02-17
    • 2019-12-30
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多