【问题标题】:How to easily extract request.POST data after Django form submission?Django表单提交后如何轻松提取request.POST数据?
【发布时间】:2021-12-20 23:27:15
【问题描述】:

我的 Django 表单提交后,我的 request.POST 数据如下所示:

这些是网页上两个不同行中包含的两个表单的值。这两行的值在 request.POST 中按顺序打印。有没有办法以更简单的方式将这些数据打印到后端,这样我就不必遍历所有这些数据来提取其中包含的特定字段?

例如。像这样的东西: <QueryDict: {'form-0-country': ['19389','19390'], 'form-0-city': ['Montreal','Toronto'], 'form-0-eid': ['450'], 'form-0-company': ['Nestle','Nestle'], 'form-0-dept': ['HR','Finance']> 这样我就可以轻松地遍历上面字典中的值(列表)。

而不是: <QueryDict: {'form-0-country': ['19389'], 'form-0-city': ['Montreal'], 'form-0-eid': ['450'], 'form-0-company': ['Nestle'], 'form-0-dept': ['HR'], 'form-1-country': ['19390'], 'form-1-city': ['Toronto'], 'form-1-eid': ['432'], 'form-1-company': ['Nestle'], 'form-1-dept': ['Finance']}>

这是我的代码 sn-p:

if request.method == 'POST':
  form = CreationForm(request.POST)
  
  if form.is_valid():                         
             form.save()
             print(form.cleaned_data)```

【问题讨论】:

    标签: html django post django-forms


    【解决方案1】:

    您可以使用cleaned_data 从表单中提取值。

    例如:

    country = form.cleaned_data["country"]
    city = form.cleaned_data["city"]
    

    【讨论】:

    • 谢谢,我已经尝试过了,但是当我尝试 clean_data 时,我得到“无”,即使我在打印 request.POST 时可以看到提交的数据。任何想法为什么?
    • 有什么想法吗?
    • 嗨@xis10z,您可能需要在调用cleaned_data 之前将form = MyForm(request.POST) 添加到您的代码中。另外,你能不能试试country = request.POST.get('country'),让我知道显示的输出是什么。
    • 感谢您的回复。我试过这是结果: country = request.POST.get('form-0-country') output>> 19389 (我猜这是模型数据库中的站点ID)
    • 另外,我已经在使用这个表单 = MyForm(request.POST)。
    【解决方案2】:

    您应该打印表单而不是打印request.POST

    例如

    def your_view(request):
        if request.method == 'POST':
            form = YourForm(request.POST)
            if form.is_valid():
                 print(form.cleaned_data)
                 ...
                 ...
                 ...
    

    【讨论】:

    • 是的,我试过了,即使那时我也没有:{'Country': None, 'City': None, 'eid': None, 'company': None, 'dept': 'HR'} 我看到的唯一值是'dept',它是表单上的一个独立输入字段,而不是我定义了在我的表单类中使用的其他字段的 models.py 的一部分。
    • 有什么建议或想法吗?
    • @xis10z 你能添加你的模板和forms.py吗?
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2019-04-04
    • 2013-08-11
    • 2017-04-09
    • 2015-08-26
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多