在Djang中进行Javascript验证后发布到Python视图

2024-10-02 22:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模板,它有一个带有两个输入框的表单。问题是,我需要确保两个框中只有一个有填充值。也就是说,一个文本框应该是空的。由于Django不提供这种OR机制,我正在通过模板中的Javascript检查这一点:

function validateData() {
    if ($("#email").val() && $("#cellno").val()){
        alert("Please Enter either E-Mail Address or Cell Number");
    } else {
        alert("Form submitted successfully");
        // redirect to view_2
    }
}

问题是我想将文本框中的数据发送到视图2。如何发送文本框的值并执行验证?如果没有JS验证,我可以简单地将url添加到表单操作中。你知道吗


Tags: ordjango模板表单ifemailfunctionval
2条回答

我认为应该将函数附加到submit事件,并在验证失败时阻止提交。你知道吗

可能是这样的:

$("form").submit(function(event) {
    if ($("#email").val() && $("#cellno").val()){
        alert("Please Enter either E-Mail Address or Cell Number");
        event.preventDefault(); // this prevents the submitting.
    } else {
        alert("Form submitted successfully");
    }
});

我不知道你所说的“Django不提供这种机制”是什么意思。如果您在视图中使用Django表单,那么可以编写一个干净的方法validates fields that depend on each other。你知道吗

class MyForm(forms.Form):
    email = forms.EmailField(required=False)
    cell = forms.CharField(required=False, max_length=20)

    def clean(self):
        cleaned_data = super(MyForm, self).clean()
        if cleaned_data.get('email') and cleaned_data.get('cell'):
            raise forms.ValidationError("Please select either E-mail address or cell number, but not both")
        return cleaned_data

相关问题 更多 >