Django 1.8手写表格没有POST数据

dan*_*nit 1 django django-forms

我对自己遇到的问题感到非常沮丧.我有一个大写的手写(不使用Django的表格),我只是试图从视图中的输入访问数据(在这种情况下,一些输入发布,其他输入不是).

暂时搁置该表格的细节,因为有太多的东西在起作用,在我的故障排除过程中,我写了我能想到的最简单的表格,现在除了csrf_token之外我没有获得POST数据.

我不知道为什么会这样,因为类似的(并且更复杂)类似于我正在运行的其他几个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>
Run Code Online (Sandbox Code Playgroud)

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

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')
Run Code Online (Sandbox Code Playgroud)

Mar*_*way 5

您缺少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" /> 
Run Code Online (Sandbox Code Playgroud)

  • 不是Django不是在这里添加它们,而是浏览器.很简单,如果它们没有名称属性,浏览器将不会将它们包含在任何发布的数据中. (2认同)