Как я могу выполнить запрос PUT, используя ajax и jquery в Django? - PullRequest
0 голосов
/ 02 ноября 2019

Я часами пытался обновить базу данных в django, используя запрос PUT. Я собираю свои данные из формы и хочу обновить запись базы данных на основе текста, который вводит пользователь. Я специально должен использовать метод запроса PUT, но я не знаю, как это сделать. Любая помощь будет принята с благодарностью

Здесь я получаю данные из формы:

        $("#modify-btn").click(function(){
            console.log('modify pressed')
            $.ajax({
                url : "{% url 'modify item' %} ",
                method : "POST",
                data: $("#detailsForm").serializeArray(),
                success : function (data) {
                    console.log(data.id,data.name,data.brand,data.model)
                    /////
                    $.ajax({ /// this is where i need to use the PUT request
                        url : 
                    })



                    ///
                }
            })

        })

Это мой файл views.py:

from django.shortcuts import render
from django.http import HttpResponse
from django.http import JsonResponse
from django.template import loader
from phonemodels.models import Phone

def index(request):
    return render(request,'phonemodels/index.html',{
        'phones' : Phone.objects.all(),
    })

def items_json(request):
    return JsonResponse({
        'phones' : list(Phone.objects.values())
    })

def new_item(request):
    phone_name = request.POST['Brand']
    phone_model = request.POST['Model']
    phone_price = request.POST['Price']
    phone = Phone (brandName=phone_name,phoneModel=phone_model,phonePrice=phone_price)
    phone.save()
    return JsonResponse({
        'id' : phone.id,
        'brand': phone.brandName,
        'model' : phone.phoneModel,
        'price' : phone.phonePrice

    })
def modify_item(request):
    phone_name = request.POST['BrandModify']
    phone_model = request.POST['ModelModify']
    phone_price = request.POST['PriceModify']
    phone = Phone.objects.get(brandName=phone_name,phoneModel=phone_model,phonePrice=phone_price)
    phone.id
    return JsonResponse({
        'id' : phone.id,
        'name': phone_name,
        'brand': phone_model,
        'model' : phone_price
        })

1 Ответ

0 голосов
/ 02 ноября 2019

Это 403 вызвано исключением CSRF.

Тем не менее, если вы хотите сделать запрос PUT, это должно быть довольно просто:

  1. Вы отправляете$.ajax запрос по методу PUT
$.ajax({
    url: '',
    method: 'PUT'
})
Вы обрабатываете запрос PUT в представлении на основе функций, но вы должны убедиться, что он обернут в csrf_exempt decorator:
 path('your-url/', csrf_exempt(modify_item), name='modify-item-url')

Я сильносоветую взглянуть на CBV Джанго

...