如何获取Django Views中的所有URL参数?

问题描述 投票:0回答:4

有很多问题讨论如何获取 1 个参数,但是如何获取所有参数并保留它们的顺序?

有这样的方法:

request.GET.get('q', '')
获取1个参数。

我需要捕获对我的 URL 的 POST 请求,然后向该 URL 添加一个参数,然后将其发送回来以确认其有效性和来源。如果您想知道的话,这是针对 PayPal IPN 的。

谢谢!

python django django-views get url-parameters
4个回答
5
投票

正如@Daniel Roseman所说,你可能不需要保留顺序,在这种情况下你可以使用

request.GET
dict

您也可以获取原始查询字符串:

request.META['QUERY_STRING']

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.META


1
投票

正如 Daniel Roseman 提到的,POST 或 GET 请求参数之间的顺序不应该很重要;将它们视为

key
-
value
对而不是列表。

如果你想维持顺序,那么也许可以在

value
中传递一个列表作为
POST
并在 Django 中获取它:

myData = request.POST.get("myQuery")

具体来说,POST 请求不使用查询字符串*参见此处)。 POST 使用请求正文,而 GET 使用查询字符串。请注意,从安全角度来看,这也意味着重要的客户信息不会公然显示在 URL 中——这在处理付款时尤其很重要。

更新:*显然,POST 可以使用查询字符串,但实际上不应该。 请参阅此帖子了解更多


0
投票

paypal ipn

是的,顺序在这里很重要。这就是我要使用的:

newParameteres = 'cmd=_notify-validate&' + self.request.POST.urlencode()
req = urllib2.Request("http://www.paypal.com/cgi-bin/webscr", newParameteres)

0
投票

例如,如果您访问以下网址:

https://example.com/?fruits=apple&meat=beef

然后就可以得到

views.py
中的所有参数了,如下图。 *我的回答解释更多:

# "views.py"

from django.shortcuts import render

def index(request):

    print(list(request.GET.items())) # [('fruits', 'apple'), ('meat', 'beef')]
    print(list(request.GET.lists())) # [('fruits', ['apple']), ('meat', ['beef'])]
    print(request.GET.dict()) # {'fruits': 'apple', 'meat': 'beef'}
    print(dict(request.GET)) # {'fruits': ['apple'], 'meat': ['beef']}
    print(request.META['QUERY_STRING']) # fruits=apple&meat=beef
    print(request.META.get('QUERY_STRING')) # fruits=apple&meat=beef

    return render(request, 'index.html')
© www.soinside.com 2019 - 2024. All rights reserved.