Как найти ошибку во взаимодействии Django и Ajax?

Всем привет.

Пытаюсь сделать обновляемый селект моделей в зависимости от выбранного бренда, но где-то ошибка, не могу ее найти. То есть я не получаю значение brand_slug из POST запроса, если я напишу к примеру brand_slug = 'mazda', то все будет работать.

viesws
@ensure_csrf_cookie
def ajax_get_mark(request):
	brand_slug = request.POST.get('brand_slug', '')
	marks = Mark.objects.filter(is_active=True, brand__slug=brand_slug)
	t = get_template('ajax/filter-models.html')
	response = t.render(Context({'marks': marks,}))
	response = response.encode('utf-8')
	return HttpResponse(json.dumps(response), content_type='application/json; charset=UTF-8',)


js
$('#brand').change(function(e) {
			var brand_slug = $(this).find(':selected').val();
			e.preventDefault();
			$.ajax({ 
				url: '{% url "seller.views.ajax_get_mark" %}',
				type: 'POST', 
				data: {
				    'brand_slug' :  brand_slug,
				},
				dataType: 'json', 
				contentType: "application/json; charset=utf-8",  
				success: function (response, brand_slug) {
					console.log(response, brand_slug);
				    // $('#mark').html(response);
				},
				error: function(){
				    alert("Ошибка запроса");
				},
			}); 
    	});
  • Вопрос задан
  • 3313 просмотров
Решения вопроса 1
maxaon
@maxaon
Причина этому строка 'contentType: "application/json; charset=utf-8",'.
Вы посылаете djang'е post запрос с телом, преобразованным в json формат. В request.POST django кладет только простые запросы, то есть те, которые пришли в формате 'application/x-www-form-urlencoded'.
Уберите эту строку и должно заработать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы