2015-07-11 45 views
1

我对我遇到的问题感到非常沮丧。我有一个手写的大型表单(不使用Django的表单),并且只是试图从视图中的输入中访问数据(在这种情况下,一些输入是张贴,其他则不是)。Django 1.8手写表格没有POST数据

由于存在太多问题,因此我暂时放弃了这种形式的细节,在我的故障排除过程中,我写了我能想到的最简单的形式,现在除了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>

下面是一个简单视图检查数据:

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') 
+0

您是如何验证没有POST数据的? – Rohan

+0

Hello Rohan,@Mark Galloway已经给出了答案,但我知道没有数据,因为我正在打印来自request.POST对象的信息,请查看我上面的视图代码。感谢您的帮助。 – dannit

回答

3

你错过了标记在 '名称' 属性你的HTML表单。没有这些,Django不会将它们添加到请求中。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" /> 
+0

我的天啊!我知道这将是非常简单的事情!非常感谢你。 – dannit

+1

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