django ajax前台验证,Django Ajax提交与验证和多表单处理

在Django管理界面中,可以动态地向外键字段添加新项,我想使用bootstrap模式创建一个类似的窗口,并使用Ajax进行表单提交和验证。

这是我的用例:

这是添加项的主窗体。项目有一个ref和一个category。

3ScFy.jpg

这是添加新类别的第二个表单。

ogdA2.jpg

我对显示模态和提交表单以添加新类别没有问题。

相反,问题在于表单验证(以防用户提交空表单),以及刷新选定内容以添加新添加的类别。

这是我的代码:

表单.pyclass ItemForm(forms.ModelForm):

ref = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}),max_length=255)

category = forms.ModelChoiceField(queryset=ItemCategory.objects.all(), empty_label="(choose from the list)")

class ItemCategoryForm(forms.ModelForm):

category = forms.CharField(

max_length=255,

required=True,

help_text='Add a new category')

视图.pydef add(request):

if request.method == 'POST':

form = ItemForm(request.POST)

if form.is_valid():

item= Item()

item.ref = form.cleaned_data.get('ref')

item.save()

return redirect('/item_list/')

else:

form = ItemForm()

form1 = ItemCategoryForm()

return render(request, 'item/add.html', {'form': form, 'form1':form1})

def add_category(request):

if request.method == 'POST':

form1 = ItemCategoryForm(request.POST)

if form1.is_valid():

vulnCategory = ItemCategory()

ItemCategory.category = form1.cleaned_data.get('category')

ItemCategory.save()

if request.is_ajax():

#TODO: What Should I redirect

else:

#TODO: What Should I redirect

else:

#TODO: What Sould I do to return errors without reloding the page and to refresh the list of categories

网址.pyurl(r'^add/$', 'add', name='add'),

url(r'^add_category/$', 'add_category', name='add_category'),

我还添加了这个jQuery函数来加载结果$(".add").click(function () {

$.ajax({

url: '/items/add_category/',

data: $("form").serialize(),

cache: false,

type: 'post',

beforeSend: function () {

$("#add_category .modal-body").html("

loading.gif
");

},

success: function (data) {

$("#add_category .modal-body").html(data);

}

});

});

附言:我知道这可能是重复的,但没有任何答案让我说到点子上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值