如何在 Django 中解析请求

Ash*_*rma 5 django django-templates django-views

嗨,我正在制作一个网络服务器,我必须在其中点击来自 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: {}>

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

Dhi*_*aTN 6

在您的情况下,您在 url 中发送数据,以便通过request.GET以下方式访问数据:

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

实际上request datarequest.bodyrequest.GET和之间存在差异request.POST

  • 如果您将 POST 请求发送到 django函数视图基于类的视图:您在request.body或 中访问请求数据request.POST
  • 如果您向 Django REST Framework 发送 POST 请求:您访问request.data. 您也可能在 Internetrequest.DATA上发现这是正确的,但它在较新版本的 DRF 中已被弃用,而支持 request.data。
  • 如果您像在这种情况下那样在 url 中发送参数,则您可以request.GET按照上面的说明访问数据表单。

  • 参数作为字典的键发送,因此如果有重复,将只考虑一个。因此,您可以使用不同的名称或列表发送它们。查看这篇文章了解更多关于[使用列表与否](http://stackoverflow.com/a/9176496/5658350) (2认同)
  • @DhiaTN 每个键只考虑一个值是不正确的。发送多个值是完全有效的;在这种情况下,您可以使用 `request.GET.getlist('param_name')` 将它们全部作为列表。 (2认同)