以Django格式访问POST数据

时间:2011-06-29 15:28:19

标签: python django

我一直在使用this site作为如何在Django中创建动态表单的示例。在他看来,他使用

if request.method == 'POST':
    form = UserCreationForm(request.POST)

将数据传递到表单中,并在表单构造函数中使用

extra = kwargs.pop('extra')

访问POST数据。我尝试用我的观点做类似的事情:

def custom_report(request):
    if request.method=='POST':
        form=CustomQueryConstraintForm(request.POST)
    else:
        form=CustomQueryConstraintForm()
    return render(request, 'frontend/custom_report.html', {'form':form})

在我的表单构造函数中,我打印了argskwargs,发现kwargs为空,args是一个包含QueryDict的元组,而form=CustomQueryConstraintForm(**request.POST)包含POST数据。如果我尝试使用kwargsargs[0][element_name][0]中的每个元素都是一个包含字段值作为唯一元素的列表。我在这里做错了吗?如果没有,是否有更优雅的方式来访问数据而不是{{1}}?

3 个答案:

答案 0 :(得分:8)

这是表单的预期行为:传递给表单的POST数据是第一个参数args [0]而不是关键字参数。你在找什么?

data = args[0]
print data['my_field']
  

并在他使用的表单构造函数中   要访问的额外= kwargs.pop('extra')   POST数据。

kwargs.pop('extra')没有获得POST数据。这是与给定用户相关的问题列表 - 作者给出了“营销部门”递给您的一些情景。

在任何情况下,如果您需要在表单中的任何位置访问帖子数据,我会发现self.dataforms.__init__中设置的最干净的。{/ p>

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.data['my_field']

答案 1 :(得分:0)

如果我理解正确,在POST请求之后,您正在尝试重新显示填写表单字段的相同表单页面,对吗?如果是,这就是您所需要的:

form = CustomQueryConstraintForm(initial=request.POST)

答案 2 :(得分:0)

使用> mac_string = "68:a8:6d:0b:90:46" > mac_int = tonumber(mac_string:gsub(':',''),16) > print(mac_int) 1.1507259326881e+14 方法后,您还可以通过cleaned_data字典访问表单数据。像这样:

is_valid()

它是已输入表单的值的字典。