Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 一个url上的Django AJAX异步调用_Jquery_Python_Ajax_Django_Forms - Fatal编程技术网

Jquery 一个url上的Django AJAX异步调用

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

我对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',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">&times;</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')