【问题标题】:Ajax in Django : url not foundDjango中的Ajax:找不到url
【发布时间】:2020-05-02 08:22:28
【问题描述】:

我正在编写一个小型 Django 项目,用户可以在其中选择一个对象并将其保存在数据库中。我正在尝试在按钮上实现 Ajax 调用,以便在必要时删除此对象。 我是一步一步做的,用控制台调试。

我的网址:

app_name = 'register'
urlpatterns = [
    path('<int:user_id>/', views.account, name='account'),
    path('/delete/', views.delete, name='delete'),
    ]

我的观点.py:

def delete(request):
   data = {'success': False} 
   if request.method=='POST':
      product = request.POST.get('product')
      print(product)
      data['success'] = True
   return JsonResponse(data)

我的 ajax.js:

$("#form_id").on('submit', function(event) {
    event.preventDefault();    
    var product = 'coca-cola'
    console.log('ok till this point')
    $.ajax({        
        url: '{% url "register/delete" %}',        
        type: "POST",
        data:{
             'product':product, 
             'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val()
        },
        datatype:'json',
        success: function(data) {
          if (data['success'])
             console.log('working fine')
        }
    }); 
});

我的观点目前没有多大作用,但我对 Ajax 没有任何了解,我正在一步一步地做。

这是我在控制台中遇到的错误:

jquery.min.js:2 POST http://127.0.0.1:8000/register/6/%7B%%20url%20%22register/delete%22%20%%7D 404 (Not Found)

据我了解,Ajax 找不到我的网址:'{% url "register/delete" %}'

我试过'{% url "register:delete" %}' 也没有运气。

【问题讨论】:

    标签: ajax django-forms


    【解决方案1】:

    经过一些调整,我找到了答案,我在 Ajax 调用之前定义了我的 url,然后将它传递给它:

    $("#form_id").on('submit', function(event) {
        event.preventDefault();    
        var product = 'coca-cola'
        var url = '/register/delete/'
        console.log( url)
        $.ajax({        
            url: url,        
            type: "POST",
            data:{
                 'product':product, 
                 'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val()
            },
            datatype:'json',
            success: function(data) {
              if (data['success'])
                 console.log('working fine')
            }
        }); 
    });
    

    【讨论】:

      【解决方案2】:

      您也可以只将 url 字符串添加到不带字符 {% url %} 的“url”参数中。也许您从模式 Django 中复制了代码并将其添加到 JS 文件中。所以它不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 2016-10-29
        • 2013-07-13
        • 2017-03-29
        • 2017-01-18
        相关资源
        最近更新 更多