#jquery #django #django-views
#jquery #django #django-просмотры
Вопрос:
Я создал функцию удаления в Django, когда я пытаюсь удалить сообщение с помощью jQuery, я получаю эту ошибку Field
‘id’ ожидаемое число, но получил n n n
Я также добавляю попытку назначить идентификатор через pk, но я получаю ту же ошибку, может кто-нибудь сказать мне, как я могу использовать эту функцию с помощью jQuery
def ArticleDelete(request):
if request.method == "POST":
pk = request.POST.get('pk')
article = get_object_or_404(Article, pk=pk)
messages.success(request, 'The story was deleted successfully!')
article.delete()
return JsonResponse({"success": True}, status=200)
else:
return JsonResponse({"success": False}, status=400)
urls.py
urlpatterns = [
path('delete/', views.ArticleDelete, name='delete'),
}
index.js
$('.delete').click(function () {
var this_html = $(this);
var pk = this_html.parent().parent().children().first().text();
$.ajax({
url: '{% url "del" %}',
type: 'POST',
headers: { "X-CSRFToken": '{{csrf_token}}' },
data: { pk: pk },
success: function () {
this_html.parent().parent().remove();
}
});
})
Комментарии:
1. проблема, похоже, из
var pk
, покажите свой файл шаблона. кроме того,console.log(pk)
это может помочь вам в отладке.
Ответ №1:
Добавьте что-нибудь, чтобы распечатать значение pk из вашего запроса.POST (чтобы убедиться, что это то, что вы думаете)
pk = request.POST.get('pk')
print('pk from POST = ', pk)
Вы также можете попробовать принудительно присвоить pk известному значению в вашей функции ArticleDelete, чтобы определить, связана ли проблема с сомнительными данными в запросе.ОПУБЛИКОВАТЬ или что-то еще в функции ArticleDelete
О, подождите — похоже, у вас несоответствие типов, теперь, когда я снова смотрю. Попробуйте преобразовать ваш pk из POST в int, так что…
if request.method == "POST":
pk = int(request.POST.get('pk')) # Make it an int before passing to query
article = get_object_or_404(Article, pk=pk)
...
Прямо сейчас оно возвращается в виде строки, которая, похоже, не нравится базе данных — похоже, вместо этого требуется целочисленное значение