【问题标题】:Does Making an AJAX call make a DJANGO form Invalid?进行 AJAX 调用是否会使 DJANGO 表单无效?
【发布时间】:2016-02-23 10:54:01
【问题描述】:

我使用选择小部件上的更改事件对我的服务器进行 ajax 调用。这会导致 Django 表单无效吗?下面是代码示例。

JAVASCRIPT

<form class="form-horizontal" action="{% url 'accountSelections' %}" method="post">
 {% csrf_token %}
   <div class="form-group">
       <div class="row">
              <div class="col-md-4">

                  {{ account_selection_form|crispy }}

              <input class="btn btn-primary" id="button" type="Submit" value="Next >>">
              </div>
              <div class="col-md-4">
                 &nbsp;
              </div>
              <div class="col-md-4">
                <div id="grid"></div>
              </div>
        </div>
   </div>
</form>`
$( document ).ready(function() {

$("#id_excludeClassification").SumoSelect();

var token = $('input[name="csrfmiddlewaretoken"]').prop('value');

$( "#id_acctFilterName" ).change(function() {
    var data = "";
    $.ajax({
        type:"GET",
        url : "../filter",
        data : "id="+$(this).val(),
        csrfmiddlewaretoken: token,
        success : function(response) {
            $("#grid").kendoGrid({
                data: response,
                height: 550,
                groupable: true,
                sortable: true,
                columns: [
                    {
                    field: "acctCd",
                    title: "Code"
                }, {
                    field: "shortName",
                    title: "Account Name"
                }]
            });

            var grid = $("#grid").data("kendoGrid");
            dataSource = new kendo.data.DataSource({
                data: response
            });

            grid.dataSource = dataSource;
            dataSource.read();
            grid.refresh();

            data = response;
            return response;
        },
        error: function() {
            alert('Error occured');
        }
    });
});
});

表单提交后是否会导致表单无效?

【问题讨论】:

  • 能否添加相关代码以了解您的问题?

标签: django django-forms


【解决方案1】:

我的理解是你可以使用同一个 CSRF 令牌多次提交,所以这应该不是问题。

【讨论】:

    【解决方案2】:

    你把你的csrfmiddlewaretoken 变量放到你发送到你的服务器的data 对象然后它就不能工作了。

    这是你必须做的:

    data : {
        id : $(this).val(),
        csrfmiddlewaretoken: token,
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多