Ajax в Django: URL не найден - PullRequest
1 голос
/ 02 мая 2020

Я кодирую небольшой проект Django, в котором пользователь может выбрать объект и сохранить его в базе данных. Я пытаюсь реализовать вызов Ajax для кнопки, чтобы удалить этот объект, если это необходимо. Я делаю это шаг за шагом, отлаживая с помощью консоли.

мои URL:

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

my view.py:

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

my 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: '{% url "register/delete" %}'.

Я пытался '{% url "register:delete" %}' без удачи тоже.

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел ответ после некоторой настройки, я определил свой URL перед вызовом Ajax и затем передал его в нем:

$("#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')
        }
    }); 
});
...