2015-09-05 59 views
0

我有一种外行人的形式,有一堆按钮(表现为复选框)与值。用户可以选择一些按钮。 按钮将它们的值(通过JQuery函数)推送到我用来收集值的隐藏输入中。基于隐藏输入的模板值验证表单 - 这可能吗?

我想确保每个隐藏输入的"values="属性不是null""当用户按下提交表单。

例:请确保输入不等于此:

<input autocomplete="off" id="id_valuePlatform" name="valuePlatform" type="hidden">

<input autocomplete="off" id="id_valuePlatform" name="valuePlatform" type="hidden" value=""> 

这里的forms.py:

class getGames(forms.Form): 
    valuePlatform = forms.CharField(required=True, error_messages={'required': 'You need to tell us your platform(s)!'}, widget=forms.HiddenInput(attrs={'autocomplete': 'off'})) 

模板:

<form method= "POST" autocomplete="off"> {% csrf_token %} 
      {{ form.non_field_errors }} 
      <div class="container"> 
      {% if form.valuePlatform.errors %} 
       <ol> 
       {% for error in form.valuePlatform.errors %} 
        <li><strong>{{ error|escape }}</strong></li> 
       {% endfor %} 
       </ol> 
      {% endif %} 
      </div> 
        {{ form.valuePlatform }} 
     </div> 
     </div> 
</form> 

Views.py:

from .forms import getGames   
def find(request): 
    form = getGames() 
    context = {"form": form} 

    if form.is_valid(): 
     print form.cleaned_data['valuePlatform'] 

这甚至可能,或者我会通过Ajax的POST传递数据给Django的?

+0

它并不形式值是否是使用JavaScript或没有设置之至Django的。上面的例子应该可以工作。如果它不起作用,那么在你的视图中打印'request.POST'和'form.errors'可能会帮助你看到你提交的数据。 – Alasdair

+0

它确实有效,但我希望表单在值为空或空时抛出一个错误。 – AllTheGoodNamesWereTaken

+0

您是否检查过消息是否出现在'form.errors'中?你如何在模板中显示公司错误?你看过[渲染表单错误文档](https://docs.djangoproject.com/en/1.8/topics/forms/#rendering-form-error-messages)吗? – Alasdair

回答

0

更改views.py这一点,在文档中寻找@麦金太尔的例子后:

from .forms import getGames   
def find(request):  

    form = getGames(request.POST or None) 
    context = {"form": form} 

    if request.method == 'POST': 
     if form.is_valid(): 
      print form.cleaned_data['valuePlatform']