首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >管理窗体数据丢失或已被篡改验证表单。

管理窗体数据丢失或已被篡改验证表单。
EN

Stack Overflow用户
提问于 2017-01-16 09:05:00
回答 2查看 732关注 0票数 0

我到处找遍了,但没能解决。我的页面上有一个表格集(表格在底部)。当我使用ajax按“保存”按钮时,需要保存主窗体和窗体集。已发送POST请求,但存在错误。

错误"POST /new/ HTTP/1.1“500 59

ValidationError: U‘’ManagementForm数据丢失或已被篡改“

Views.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def master_detail_new(request):
    if request.method == 'GET':
    author = TmpPlInvoice()
    author_form = TmpForm(instance=author)
    BookFormSet = inlineformset_factory(TmpPlInvoice, TmpPlInvoicedet,
                                        exclude=('emp_id', 'voucher', 'lineitem', 'id',),
                                        form=TmpFormDetForm, )
    formset = BookFormSet(instance=author)
    return render(request, 'main.html',
                  {'form': author_form, 'formset': formset, 'formtotal': totalform, 'postform': postform},
                  )

    elif request.method == 'POST':
    def get_new_voucher_id():
        temp_vid = TmpPlInvoice.objects.order_by().values_list("voucher_id", flat=True).distinct()
        if not temp_vid:
            voucher_id = str(1).zfill(4)
        else:
            voucher_id = str(int(max(temp_vid)) + 1).zfill(4)
        return voucher_id

    author_form = TmpForm()
    author = TmpPlInvoice()
    BookFormSet = inlineformset_factory(TmpPlInvoice, TmpPlInvoicedet, exclude=('emp_id', 'voucher', 'lineitem', 'id',),
                                        form=TmpFormDetForm, extra=2)
    formset = BookFormSet(instance=author)
    voucher_id = get_new_voucher_id()
    author = TmpForm(request.POST)
    if author.is_valid():
        created_author = author.save(commit=False)
        created_author.voucher_id = voucher_id
        created_author.save()

        formset = BookFormSet(request.POST, instance=created_author)
        if formset.is_valid():
            formset.save()
        return HttpResponseRedirect('/')

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <div class="x_content">
    {{ formset.management_form }}
    {{ formset.non_form_errors.as_ul }}
     <table class="table table-striped responsive-utilities jambo_table   bulk_action form"
   id="formset" style="background-color:#d0ffff;">
       <thead style="background-color:#9df0e0;;color: #73879C">
{% for form in formset.forms %}
    {% if forloop.first %}
    <thead>
    <tr class="headings">
        {% for field in form.visible_fields %}
        <th>{{ field.label|capfirst }}</th>
        {% endfor %}
    </tr>
    </thead>
    {% endif %}

Javascript发送数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#save").click(function() {
    $.ajax({
      type:'POST',
        url:'/new/',
        data:{
            csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
        },
        success:searchSuccess,
        dataType: 'html'
    });
   });

function searchSuccess(data, textStatus, jqXHR)
  {
    $('#myForm').html(data);
   }

我做错什么了?任何帮助都将不胜感激。多模板集

编辑I不更改窗体集的数量。我的CSRF运转良好。而且,如果没有ajax,我也会遇到同样的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <input id="id_tmpplinvoicedet_set-TOTAL_FORMS" name="tmpplinvoicedet_set-TOTAL_FORMS" type="hidden" value="3" />
 <input id="id_tmpplinvoicedet_set-INITIAL_FORMS" name="tmpplinvoicedet_set-INITIAL_FORMS" type="hidden" value="0" />
 <input id="id_tmpplinvoicedet_set-MIN_NUM_FORMS" name="tmpplinvoicedet_set-MIN_NUM_FORMS" type="hidden" value="0" />
 <input id="id_tmpplinvoicedet_set-MAX_NUM_FORMS" name="tmpplinvoicedet_set-MAX_NUM_FORMS" type="hidden" value="1000" />
EN

回答 2

Stack Overflow用户

发布于 2017-01-16 09:37:15

如果表单数量在发送到浏览器后发生了更改,则此错误将由窗体集引发。表单集使用management_form中名为management_form的隐藏输入字段来跟踪该数字。来自文档

它用于跟踪显示了多少表单实例。如果要通过JavaScript添加新表单,也应该在此表单中增加计数字段。

票数 2
EN

Stack Overflow用户

发布于 2018-08-19 10:04:44

这就是我如何更改每个表单的TOTAL_FORMS。注意*当向页面动态添加表单时,我传入一个表单作为所有HTML和正则表达式的ID。

其中一个是我调用的add按钮:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
addForm: function () {
    this.count++
    let form_count = this.count
    form_count++

    let formID = 'id_form-' + this.count

    incremented_form = this.vue_form.replace(/form-\d/g, 'form-' + this.count)
    this.formList.push(incremented_form)
    this.$nextTick(() => {
        let total_forms = document.getElementsByName('form-TOTAL_FORMS').forEach
        (function (ele, idx) {
            ele.value = form_count
            })
        })
},

这将是所有TOTAL_FORMS的全部1。从我很少的经验来看,django看最后一个表单,看看它提交的表单数量是否正确。因此,您可能不必更新

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41681462

复制
相关文章
JavaScript 的表单或邮箱验证
JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。 被 JavaScript 验证的这些典型的表单数据有: 用户是否已填写表单中的必填项目? 用户输入的邮件地址是否合法? 用户是否已输入合法的日期? 用户是否在数据域 (numeric field) 中输入了文本?
用户1503405
2021/10/08
1.8K0
django 用表单验证数据
使用Field可以是对数据验证的第一步。你期望这个提交上来的数据是什么类型,那么就使用什么类型的Field。
用户2200417
2023/01/29
6240
表单数据验证方法(一)—— 使用validate.js实现表单数据验证
 好久没写博客了,真的是罪过,以后不能这样了,只学习不思考,学的都是白搭,希望在博客园能记录下自己学习的点滴,虽然记录的都是些浅显的技术,但能起到巩固自己和稍微帮助一下和我一样的菜鸡也是不错的,哈哈,不好意思,闲话扯多了。
CherishTheYouth
2019/09/11
5.7K0
表单数据验证方法(一)—— 使用validate.js实现表单数据验证
Element表单嵌套数据验证
除了在 Form 组件上一次性传递所有的验证规则外还可以在单个的表单域上传递属性的验证规则
tianyawhl
2020/10/14
1K0
Laravel Validation 表单验证(二、验证表单请求)
创建表单请求验证 面对更复杂的验证情境中,你可以创建一个「表单请求」来处理更为复杂的逻辑。表单请求是包含验证逻辑的自定义请求类。可使用 Artisan 命令 make:request 来创建表单请求类:
joshua317
2022/10/31
29.4K0
Element表单嵌套数据验证
除了在 Form 组件上一次性传递所有的验证规则外还可以在单个的表单域上传递属性的验证规则
一只图雀
2020/09/21
9420
php-验证表单数据
浏览量 1 <?php // 定义变量并默认设置为空值 $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQU
kdyonly
2023/03/03
1.2K0
离开页面前,如何防止表单数据丢失?
本文介绍了如何实现一个FormPrompt组件,在用户尝试离开具有未保存更改的页面时发出警告。文章讨论了如何使用纯JavaScript和beforeunload事件处理这类情况,以及使用React Router v5中的Prompt组件和useBeforeUnload以及unstable等React特定解决方案。向用户添加一个确认对话框,询问他们在具有未保存表单更改的情况下是否确认重定向是一种良好的用户体验实践。通过显示此提示,用户将意识到他们有未保存的更改,并允许在继续重定向之前保存或丢弃它们的工作。
前端小智@大迁世界
2023/05/02
5.9K0
验证form表单提交数据是否合法
表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。
OECOM
2020/07/02
2.4K0
Angularjs 表单验证
<input name="id" ng-disabled="f_isEditMode()" class="form-control" ng-model="node.id" required placeholder="请输入系统唯一标识" ng-pattern="/^[\w\d_-]*$/"> <p>系统的唯一标识名称(格式:字母、数字、连字符、下划线) 如:mysql</p> <error-strings> <error-string on="my
问天丶天问
2018/06/13
3K0
formvalidation表单验证
官方文档:http://formvalidation.io var $formEntityProfileSearch = $("form[name=entityProfileSearch]"); var $formValidationEntityProfileSearch = $formEntityProfileSearch.data("formValidation"); //初始化表单验证 $formValidationEntityProfileSearch.revalidateField('compan
windseek
2018/05/15
3K0
Validate表单验证
validate 一、 validate的使用步骤 引入jquery.min.js 引入 jquery.validate.js 页面加载后对表单进行验证 $("#表单id名").validate({}) 在validate中的rules中编写验证规则(格式如下) 字段的name属性:“校验器”(tisps:一个输入框只有一个校验器的时候使用) 字段的name属性:{校验器:值,校验器:值}(tips:输入框需要有多个校验器的时候使用) 在validate中的messages中编写提示信息(tips格
Twcat_tree
2022/11/30
3.7K0
Validate表单验证
JavaScript 表单验证
JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。
陈不成i
2021/07/19
3.1K0
Laravel表单验证
今天来说一下laravel框架的表单验证实例代码,下面一起来看看吧! 一、场景 用户前台登录页面,如下图 二、提交方式 AJAX提交 三、说明 1、laravel框架表单提交需要有CSRF验证 2、
申霖
2020/11/23
3.5K0
Laravel表单验证
angularjs 表单验证
一、常用的表单验证指令  1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required />   2. 最小长度 验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}": <input type="text" ng-minlength="5" /> 3. 最大长度 验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用指令ng-maxlength=
柴小智
2018/04/10
6.7K0
angularjs 表单验证
jquery 表单验证
("form :input.required").each(function(){
用户5760343
2019/10/10
3.6K0
jquery 表单验证
jsp表单验证
后面有代码,需要直接拿 toUpperCase()方法将字符串小写字符转换为大写 语法 public String toUpperCase() 或 public String toUpperCase(Locale locale) 参数 无 返回值 字符转换为大写后的字符串。 效果图如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE ht
天蝎座的程序媛
2022/11/18
3.1K0
jsp表单验证
Element表单验证
要加验证之前一定要确保已经写了 prop 属性,该属性是跟 rule 绑定在一起的,也可以在行内单独制定 rules。
leader755
2022/03/09
3.6K0
bootstrap 表单验证 不为空验证
<!doctype html> <html> <head> <meta charset="utf-8"> <title>联想控股</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="css/bootstrap.css" rel="stylesheet" type="text/css"> <link href="css/bootstrapValidator.min.css" rel="stylesheet" type="text/css"> <script src="http://code.jquery.com/jquery.js"></script> <script src="js/bootstrap.min.js"></script> <script src="js/bootstrapValidator.min.js"></script> </head> <body>  <form role="form"> <div class="form-group"> <label>Username</label> <input type="text" class="form-control" name="username" /> </div> <div class="form-group"> <label>Email address</label> <input type="text" class="form-control" name="email" /> </div> <div class="form-group"> <button type="submit" name="submit" class="btn btn-primary">Submit</button> </div> </form> <script>
用户5760343
2019/07/07
8.7K0
表单数据验证方法(二)——ASP.NET后台验证
  昨天写了一下关于如何在前台快捷实现表单数据验证的方法,今天接着昨天的,把后台实现数据验证的方法记录一下。先说明一下哈,我用的是asp.net,所以后台验证方法也是基于.net mvc来做的。
CherishTheYouth
2019/09/11
2.8K0
表单数据验证方法(二)——ASP.NET后台验证

相似问题

django错误管理表单丢失或已被篡改

12

ManagementForm数据丢失或已被篡改

10

ManagementForm数据丢失或已被篡改

30

嵌套的Django表单:“ManagementForm数据丢失或已被篡改”

10

Django - ManagementForm数据丢失或已被篡改

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文