#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. Спасибо, я понял, в чем дело. спасибо за ваш ответ.