首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django表单ValidationError

Django表单ValidationError
EN

Stack Overflow用户
提问于 2015-12-15 04:16:42
回答 1查看 436关注 0票数 2

我在一个视图中有两个表单。一个htlm表单包括表单和表单集,另一个html表单仅包括单个表单。

当我尝试提交单个表单(提醒)时,我收到以下错误:

代码语言:javascript
复制
[u'ManagementForm data is missing or has been tampered with']

查看:

代码语言:javascript
复制
    form_class = CreateEventForm
    second_form_class = modelformset_factory(EventTime, form = EventTimeForm, extra=3, formset=EventTimeFormset)
    third_form_class = Reminder
    model = Event
    template_name = 'eventAdmin.html'
    def get_context_data(self, **kwargs):
            context = super(EventAdminPage, self).get_context_data(**kwargs)
            context['form'] = self.form_class(self.request.POST or None, prefix="form", instance = self.object)
            context['formset'] = self.second_form_class(
                self.request.POST or None,
                prefix="formset", 
                queryset=context['event_times'])
            context['reminder_form'] = Reminder(self.request.POST or None)
            return context

        def post(self, request, **kwargs):
            self.object = self.get_object()
            event_times = EventTime.objects.filter(event = self.object).exclude(start_time = None)
            if 'update_event_form' in request.POST:
                form_class = self.get_form_class()
                form = self.form_class(request.POST, prefix="form", instance=self.get_object())
                formset = self.second_form_class(request.POST, prefix="formset", queryset=event_times)
                if form.is_valid() and formset.is_valid():
                    event = form.save()
                    event_times = formset.save()
                    return HttpResponseRedirect('/event-admin-%s' %self.kwargs['event_id']) 
                else:
                    return self.render_to_response(
                        self.get_context_data(form=form, formset=formset))
            if 'reminder_form' in request.POST:
                form_class = self.second_form_class
                form_name = 'Reminder'
                form = form_class(request.POST)
                if form.is_valid():
                    form.save(commit=False)
                    message = form.cleaned_data.get('text')
                    return HttpResponseRedirect('/event-admin-%s' %self.kwargs['event_id']) 
                else:
                    return self.render_to_response(
                        self.get_context_data(form=form))

引发错误的表单的HTML:

代码语言:javascript
复制
<form method='POST' action=''><input type='hidden' name='csrfmiddlewaretoken' value='3uQyEn4m8bHpM7Jy6a8WKQz5A8Uf6RZF' />


<div id="div_id_text" class="form-group"> <label for="id_text" class="control-label  requiredField">
                Text<span class="asteriskField">*</span> </label> <div class="controls "> <textarea class="textarea form-control" cols="40" id="id_text" maxlength="500" name="text" rows="10">
</textarea> </div> </div>

            <input class="btn btn-primary" type="submit" name="reminder_form" value="Send" />
        </form> 
EN

回答 1

Stack Overflow用户

发布于 2015-12-15 05:16:51

您需要在<form method='POST' action=''>之后添加此行{{ form.management_form }}。Django使用它来管理表单集中的表单。

代码语言:javascript
复制
<form method='POST' action=''>
  {{ form.management_form }}
  <input type='hidden' name='csrfmiddlewaretoken' value='3uQyEn4m8bHpM7Jy6a8WKQz5A8Uf6RZF' />
  <div id="div_id_text" class="form-group"> 
    <label for="id_text" class="control-label  requiredField">
        Text
        <span class="asteriskField">*</span>
    </label> <div class="controls ">
    <textarea class="textarea form-control" cols="40" id="id_text" maxlength="500" name="text" rows="10">

    </textarea> 
    </div> 
  </div>

  <input class="btn btn-primary" type="submit" name="reminder_form" value="Send" />
</form> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34275812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档