Jquery 一个url上的Django AJAX异步调用
我对Django中的表单提交有疑问。有两个表单,每个表单都有自己的编号插入到数据库中Jquery 一个url上的Django AJAX异步调用,jquery,python,ajax,django,forms,Jquery,Python,Ajax,Django,Forms,我对Django中的表单提交有疑问。有两个表单,每个表单都有自己的编号插入到数据库中 表单1:必须插入值1 表单2:必须插入值2 这两个表格都在url/kategorije/上。当我提交form1时,form1以值1插入数据库,这是可以的。但当我提交form2时,form2会插入值1。问题是,我想用form2在数据库中插入值2。 我的代码如下所示: models.py forms.py views.py ajax.js /*服务*/ $('#service1')。在('submit',funct
/kategorije/
上。当我提交form1时,form1以值1插入数据库,这是可以的。但当我提交form2时,form2会插入值1。问题是,我想用form2在数据库中插入值2。
我的代码如下所示:
models.py
forms.py
views.py
ajax.js
/*服务*/
$('#service1')。在('submit',function()上{
var$form=$(此);
$.ajax({
类型:“POST”,
网址:“/kategorije/”,
数据:$form.serialize(),
数据类型:“json”,
要求:正确,
成功:功能(响应){
如果(!response.success){
console.log(response.error.name);
$niftyNoty({
键入:“info”,
容器:“#alertajme_ser”,
html:“Kategorija sa nazivom”+response.error.name+”većpostoji!Promjenite naziv kategorije.
Zatvorite notifikaciju',
closeBtn:false,
计时器:5000
});
}否则{
$niftyNoty({
键入:“info”,
容器:“#alertajme_ser”,
html:“Kategorija sa nazivom”+响应。成功+“uspješno je kreirana!Zatvorite notifikaciju”,
closeBtn:false,
计时器:5000
});
}
},
错误:函数(rs,e){
$niftyNoty({
键入:“info”,
容器:“#alertajme_ser”,
html:“Kategorija sa nazivom”+rs.responseText+“konj”+“većpostoji!Promjenite naziv kategorije.
Zatvorite notifikaciju”,
closeBtn:false,
计时器:5000
});
返回false;
}
});
返回false;
});
第二个Ajax服务相同,但表单id不同
template.html
&时代;
多达万杰·卡泰戈里耶·乌斯卢加
{%csrf_令牌%}
纳齐夫雪橇*
{{form2.name}
斯普雷米·卡特戈里朱
如果你能在这个问题上给我一些建议。也许我在forms.py语句中做错了什么。但我不知道如何让它工作。在views.py中
if request.is_ajax():
form1 = NewCategory(request.POST or None)
if form1.is_valid():
a = form1.save(commit=False)
name = form1.cleaned_data['name']
if Category.objects.filter(name__exact=name).exists():
error = Category.objects.filter(name__exact=name).values('name')[0]
else:
a.type_id = CategoryType.objects.get(type='products')
a.save(name)
success = name
ajax_vars = {'success': success, 'error': error}
return HttpResponse(json.dumps(ajax_vars))
如果请求是ajax,则将始终返回,即使它应该是针对form2的。我想你是想把最后两行的表格再加一次,这样只有在form1有效的情况下才会提交。你没有做任何事情来告诉Django表格是分开的。它们都只有一个
名称
字段;根本没有什么可以把他们区分开来
一个简单的解决方案是在表单实例化中使用prefix
参数,这样Django就可以使字段唯一
if request.is_ajax():
form1 = NewCategory(request.POST or None, prefix='form1')
if form1.is_valid():
...
else:
form1 = NewCategory(prefix='form1')
if request.is_ajax():
form2 = NewServiceIn(request.POST or None, prefix='form2')
if form2.is_valid():
...
else:
form2 = NewServiceIn(prefix='form2')
谢谢你的意见,但如何让它工作@朱利叶斯
@login_required
@csrf_protect
@csrf_exempt
def CategoryNew(request):
template = 'category.html'
user_pk = request.user.id
org_name = OrganizationInfo.objects.filter(id=user_pk).values('name')[0]
error = ''
success = False
# Forms
if request.is_ajax():
form1 = NewCategory(request.POST or None)
if form1.is_valid():
a = form1.save(commit=False)
name = form1.cleaned_data['name']
if Category.objects.filter(name__exact=name).exists():
error = Category.objects.filter(name__exact=name).values('name')[0]
else:
a.type_id = CategoryType.objects.get(type='products')
a.save(name)
success = name
ajax_vars = {'success': success, 'error': error}
return HttpResponse(json.dumps(ajax_vars))
else:
form1 = NewCategory()
if request.is_ajax():
form2 = NewServiceIn(request.POST or None)
if form2.is_valid():
b = form2.save(commit=False)
name1 = form2.cleaned_data['name1']
if Category.objects.filter(name__exact=name1).exists():
error = Category.objects.filter(name__exact=name1).values('name')[0]
else:
b.type_id = CategoryType.objects.get(type='services')
b.save(name1)
success = name1
ajax_vars = {'success': success, 'error': error}
return HttpResponse(json.dumps(ajax_vars))
else:
form2 = NewServiceIn()
return render_to_response(template, dict(name=org_name, form1=form1, form2=form2),
context_instance=RequestContext(request))
/*Service*/
$('#service1').on('submit', function(){
var $form = $(this);
$.ajax({
type: "POST",
url: "/kategorije/",
data: $form.serialize(),
dataType: "json",
required: true,
success: function(response) {
if (!response.success) {
console.log(response.error.name);
$.niftyNoty({
type: 'info',
container : '#alertajme_ser',
html : '<h4 class="alert-title">Kategorija sa nazivom <strong>'+response.error.name+'</strong> već postoji!</h4><p class="alert-message">Promjenite naziv kategorije.</p><div class="mar-top"><button type="button" class="btn btn-info" data-dismiss="noty">Zatvorite notifikaciju</button></div>',
closeBtn : false,
timer : 5000
});
} else {
$.niftyNoty({
type: 'info',
container : '#alertajme_ser',
html : '<h4 class="alert-title">Kategorija sa nazivom <strong>'+response.success+'</strong> uspješno je kreirana!</h4><div class="mar-top"><button type="button" class="btn btn-info" data-dismiss="noty">Zatvorite notifikaciju</button></div>',
closeBtn : false,
timer : 5000
});
}
},
error: function(rs, e) {
$.niftyNoty({
type: 'info',
container : '#alertajme_ser',
html : '<h4 class="alert-title">Kategorija sa nazivom <strong>'+rs.responseText+"konj"+'</strong> već postoji!</h4><p class="alert-message">Promjenite naziv kategorije.</p><div class="mar-top"><button type="button" class="btn btn-info" data-dismiss="noty">Zatvorite notifikaciju</button></div>',
closeBtn : false,
timer : 5000
});
return false;
}
});
return false;
});
<form id ="service1" action="" method="post">
<div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title modial_header" id="myModalLabel">Dodavanje kategorije usluga</h4>
<div id ="alertajme_ser" class="panel-alert"></div>
</div>
<div class="modal-body">
<div class="col-xs-12" style="padding-top:10px;">
{% csrf_token %}
<div class="form-group">
<label class="control-label">Naziv usluge<span class="example1">*</span></label>
{{ form2.name }}
</div>
</div>
</div>
<div class="modal-footer bottom_modial">
<button type="submit" class="btn btn_modial_main">SPREMI KATEGORIJU</button>
</div>
</div>
</div>
</div>
</form>
if request.is_ajax():
form1 = NewCategory(request.POST or None)
if form1.is_valid():
a = form1.save(commit=False)
name = form1.cleaned_data['name']
if Category.objects.filter(name__exact=name).exists():
error = Category.objects.filter(name__exact=name).values('name')[0]
else:
a.type_id = CategoryType.objects.get(type='products')
a.save(name)
success = name
ajax_vars = {'success': success, 'error': error}
return HttpResponse(json.dumps(ajax_vars))
if request.is_ajax():
form1 = NewCategory(request.POST or None, prefix='form1')
if form1.is_valid():
...
else:
form1 = NewCategory(prefix='form1')
if request.is_ajax():
form2 = NewServiceIn(request.POST or None, prefix='form2')
if form2.is_valid():
...
else:
form2 = NewServiceIn(prefix='form2')