如何在Django中获取所有POST请求值?

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

有没有办法从 Django 的请求中获取所有表单名称?

<input type="text" name="getrow">

Html 请求

def demoform(request):
    if request.method=="POST"
       inputtxt=request.POST.get("getrow")
       return HttpResponse(...)

在上面我只能从

name
中得到我知道,我需要的是获取django请求的所有名称,然后解析它并获取数据。

python django forms post http-post
4个回答
28
投票

尝试使用这个:

def demoform(request):
    if request.method=="POST":
        inputtxt=request.POST['getrow']
        return HttpResponse(...)

但是如果您需要打印动态POST数据,例如发送许多产品的slug,(我是在2天前“2018年4月22日”制作的)您需要尝试这个:

for key, value in request.POST.items():
    print('Key: %s' % (key) ) 
    # print(f'Key: {key}') in Python >= 3.7
    print('Value %s' % (value) )
    # print(f'Value: {value}') in Python >= 3.7

15
投票

要在 django 中显示 POST 值,您可以执行以下操作:

print(list(request.POST.items()))

您还可以使用

dict()

print(dict(request.POST.items()))

2
投票

首先上面朋友的回答已经把如何获取所有帖子数据的事情弄清楚了。我再次为您解释一下,首先检查请求方法,然后您也可以在控制台上打印出来。

if request.method == 'POST':
           print(request.POST)

顺便说一句,request.POST 返回一个字典结构化数据,因此如果您已经知道请求的数据,那么您可以在 POST 中传递来检索。

if request.method == 'POST':
           print(request.POST['username'])

但是,如果您想处理所请求的数据,我的意思是您想过滤掉所需的数据,然后只需创建一个字典对象,然后对其进行处理即可。

post_data = dict()
if request.method == 'POST':
           post_data = request.POST
print(post_data['username'])

如果你不知道密钥,那么你可以通过从字典中检索所有密钥来过滤掉。

for key, value in post_data.items():
         if key == 'username':
                   print(value)

就是这样,希望我能好好回答你。


0
投票

例如,如果您提交以下

POST
请求值:

{# "index.html" #}

<form action="{% url 'my_app1:test' %}" method="post">
  {% csrf_token %}
  <input type="text" name="fruits" value="apple" /></br>
  <input type="text" name="meat" value="beef" /></br>
  <input type="submit" />
</form>

然后,您可以获取

POST
中所有的
views.py
请求值,如下所示。 *我的回答解释了如何在Django中获取
POST
请求值:

# "views.py"

from django.shortcuts import render

def test(request):

    print(list(request.POST.items())) # [('csrfmiddlewaretoken', 'b0EQnFlWoAp4pUrmsFxas43DYYTr7k04PhhYxqK3FDTBSXWAkJnsCA3GiownZQzS'), ('fruits', 'apple'), ('meat', 'beef')]
    print(list(request.POST.lists())) # [('csrfmiddlewaretoken', ['b0EQnFlWoAp4pUrmsFxas43DYYTr7k04PhhYxqK3FDTBSXWAkJnsCA3GiownZQzS']), ('fruits', ['apple']), ('meat', ['beef'])]
    print(request.POST.dict()) # {'csrfmiddlewaretoken': 'b0EQnFlWoAp4pUrmsFxas43DYYTr7k04PhhYxqK3FDTBSXWAkJnsCA3GiownZQzS', 'fruits': 'apple', 'meat': 'beef'}
    print(dict(request.POST)) # {'csrfmiddlewaretoken': ['b0EQnFlWoAp4pUrmsFxas43DYYTr7k04PhhYxqK3FDTBSXWAkJnsCA3GiownZQzS'], 'fruits': ['apple'], 'meat': ['beef']}

    return render(request, 'test.html')

然后就可以获取

POST
中所有的
test.html
请求值,如下所示:

{# "test.html" #}

{{ request.POST.dict }} {# {'csrfmiddlewaretoken': 'Vzjk89LPweM4loDWTb9gFNHlRQNJRMNwzQWsiUaWNhgBOr8aLfZyPjHobgqFJimk', 'fruits': 'apple', 'meat': 'beef'} #}
© www.soinside.com 2019 - 2024. All rights reserved.