Django 1.8手写表单无POST数据

Django 1.8 handwritten form no POST data

我遇到的问题让我非常沮丧。我有一个大的手写表单(不使用 Django 的表单),我只是想从视图中的输入访问数据(在那种情况下,一些输入被发布,其他的则没有)。

暂时搁置该表格的细节,因为有太多事情在起作用,在我的故障排除过程中,我写了我能想到的最简单的表格,现在除了csrf_token。

我不知道为什么会这样,因为类似的东西(而且更复杂)在我 运行 的其他几个 django 项目上运行良好。对于这个例子,我尝试了 action="" 也无济于事。有什么非常明显的东西我错过了吗?

这是html:

<!DOCTYPE html> 
<html> 
 
<head> 
</head> 
 
<body> 
<form method="POST" id="theForm" action="/simpleForm/">{% csrf_token %} 
        <input type="text" id="theText" value="Where am I?" /> 
        <input type="hidden" id="hiddenInput" value="I don't exist" /> 
        <input type="submit" /> 
 
</form> 
 
</body> 
 
</html>

这是检查数据的简单视图:

from django.shortcuts import render

def simpleForm(request):

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

        print('In post')
        print(request.POST)

        for i in request.POST.keys():

            print('key: {0} value: {1}'.format(i, request.POST[i]))

        return render(request, 'simpleForm.html')

    else:

        return render(request, 'simpleForm.html')

您缺少 HTML 表单中标签的 'name' 属性。没有这些,Django 不会将它们添加到 request.POST

<form method="POST" id="theForm" action="/simpleForm/">{% csrf_token %} 
        <input type="text" id="theText" name="mytext" value="Where am I?" /> 
        <input type="hidden" id="hiddenInput" name="myhidden" value="I don't exist" /> 
        <input type="submit" />