Как вернуть связанное значение из базы данных после нажатия функции ajax в django?

#python #django #ajax

Вопрос:

HTML

 lt;divgt;     {{ productform.vendorid|as_crispy_field }}lt;a id="vendor_id_search" class="btn btn-info"gt;searchlt;/agt;lt;/brgt;    lt;div style="display:none;" id="show_vendorname"gt;hjkhlt;/divgt;lt;brgt;  lt;/divgt;      lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"gt;lt;/scriptgt;      lt;scriptgt; $("#vendor_id_search").click(function (event) {  event.preventDefault();  var vendor_id = $("#id_vendorid").val();   $.ajax({  url: '/ajax/find_vendorname/',  method: 'GET',  data: {  'vendor_id': vendor_id  },  dataType: 'json',  success: function (data) {  $("#show_vendorname").show(data)  }  });  });  

views.py

 #vendor_name_find_ajax  def find_vendorname(request):  if request.is_ajax():  vendorid = request.GET.get('vendor_id', None)  username = CustomUser.objects.filter(first_name=vendorid)  return username  

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

Комментарии:

1. Вам нужно найти ту часть, в которой вы застряли. 1. Отправлен ли ваш ajax-запрос? (проверьте вкладку «Сеть браузеров») 2. Является ли ваш views.py функция вызывается и действительно находит что-то/отправляет что-то обратно в браузер. 3. является ли ваш js правильным, получает ли он данные и правильно ли вы вставляете их в html…. Проверьте с помощью print() и console.log (), где вы застряли. Я предполагаю, что в views.py вернуть имя пользователя не удастся, так как это набор запросов, а не HttpResponse. вам нужно правильно его визуализировать. Может быть, используйте что-то вроде DRF (просто совет)

2. Я понимаю всю концепцию этого метода и проверил по вашей ссылке. Это была ошибка при отправке запроса ajax. Кстати, спасибо за ваш комментарий.

Ответ №1:

$("#show_vendorname").show(data) покажите div, но не вводите данные.

Вам нужно установить данные до того, как с $.html()

 $("#show_vendorname").html(data).show()   

Редактировать:

Кроме того, ваш взгляд должен вернуть HttpResponse :

 from django.http import HttpResponse  def find_vendorname(request):  if request.is_ajax():  vendorid = request.GET.get('vendor_id', None)  username = CustomUser.objects.filter(first_name=vendorid)  return HttpResponse(username)  

Комментарии:

1. но не получил вывода. является ли функция просмотра и функция ajax правильными для моего требования?

2. Прости @сэм. Я отредактировал ответ.

3. Спасибо, я понял, в чем дело. спасибо за ваш ответ.