如何通过Ajax将选定的复选框发送到Django views.py

时间:2018-07-27 06:19:45

标签: python-2.7 django-forms django-views

通过ajax调用从js文件发送选定的复选框时,我得到aForm.is_valid() False

forms.py

class A(forms.Form):
        PHASE_CHOICES = (("DEV", "DEV"), ("PDT", "PDT"))
phaseList = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=PHASE_CHOICES, required = True, label='Phases')

js文件

function getCheckedBoxes(){
    var phaseSelect = {};
    $.each($("input[name='phaseList']:checked"), function() {
            phaseSelect[$(this).val()]=$(this).val();
    });

    return phaseSelect;
}

function B() {
phaseInfo = getCheckedBoxes();
var aData = {
phaseList: phaseInfo,
ajax: 'C',
    };
var aAjaxArgs = {
        type: "POST",
        url: document.URL,
        data: aData,
        complete: changeB
    };
    $.ajax(aAjaxArgs);
}}

views.py

def D(iRequest):
if iRequest.is_ajax() :
        if aForm.is_valid(): //Getting error here always saying phaseList is not matching any choice.
                if aPost['ajax'] == 'C':
                oData = ""

html文件

<form action="/D/" method="post">
        {% csrf_token %}
        <fieldset>
                {% for aField in iForm %} 
                {% if aField.label %}
                        <div class="FieldForm" >{{aField.label}}</div>
                        <div class="FieldForm">{{aField}}</div>
                    </div>
                {% endif %}
                {% endfor %}
            </div>
        </fieldset>

    <div class="formButton" id="formSubmit">
                                <input class="small button green" type="button" value="Check" id="id_o" name="osr" onclick="B()"/>
                        </div>

主要问题是如何在ajax aData变量中发送数据,以便应在views.py中的aForm.is_valid()条件下读取它。

0 个答案:

没有答案