Найти - Пользователи
Полная версия: Как преобразовать данные Ajax-запроса в Django
Начало » Django » Как преобразовать данные Ajax-запроса в Django
1
Bandicoot
Скрипт на Jquery отсылает Ajax запрос на сервер. К этому запросу прикреплена строка, которую сервер должен получить, преобразовать в число и отослать обратно скрипту

Код скрипта:
$(function(){
	$("#add-more-button").click(function() {
		var displayedPostsCount = $(".post").length;
		$.ajax({
			type: "post",
			url: "/add-more/",
			data: displayedPostsCount.toString(),
			success: function (data) {
				$("#added").html(data);
			},
			dataType: "text",
		});
	});
});

Функция в views.py:
@csrf_exempt
def add_more(request):
	if request.is_ajax():
		posts_count = request.POST
		upd_posts_count = int(posts_count) + 5
	return HttpResponse(upd_posts_count)

urls.py:
url(r'^add-more/$', 'add_more'),

Получаю ошибку 500 (internal server error) при любых попытках обработать значение request.POST

Как его изменить? Что я делаю не так?
FishHook
Bandicoot
Получаю ошибку 500 (internal server error) при любых попытках обработать значение request.POST
Даже если сервер возвращает ошибку 500, как правило клиенту приходит более-менее вменяемое описание ошибки (если DEBUG=True), посмотрите нормальным дебаггером, что пишет.
На первый взгляд, косяк тут
posts_count = request.POST
upd_posts_count = int(posts_count) + 5
Вы пытаетесь привести HttpRequest к интеджеру, видимо забыли
request.POST['some_key']
reclosedev
Если view вызывается именно так, как показали, то нужно не request.POST использовать, который содержит пост параметры, а request.body - сырые данные.
А если функция написана так же как в посте, то еще и upd_posts_count не инициализирован в случае not request.is_ajax()
Bandicoot
Получаю ошибку 500 (internal server error) при любых попытках обработать значение request.POST
Включите отладку, ошибки понятнее будут выглядеть.

Bandicoot
Спасибо, вроде разобрался
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB