Как сделать аналог https://namechk.com/ с помощью Django?

Всем привет!
Подскажите, пожалуйста, как сделать асинхронные вызовы к без перезагрузки страницы, как на сайте https://namechk.com/ с помощью Django?
Хотелось бы, чтобы проверку свободного ника делал мой бэкенд, а сама страница обращалась к этому бэку асинхронно и получала ответ.
Не очень понятно, как делается множественный асинхронный вызов проверок свободных имен, затем получаются и отображаются эти данные? На указанном выше сайте видно, что по каждому из проверяемых сервисов ответ приходит в разное время и после этого сразу отображается (квадратик меняет цвет).
Если возможно, хотелось бы понять, как выстроить архитектуру такого сайта, желательно как можно больше питона и работы на сервере, и как можно меньше JS.
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Как-то так примерно:

urls.py
urlpatterns = [
    path('check-username/', check_username, name='check_username'),
]

views.py
@require_GET
def check_username(request):
    if 'name' not in request.GET:
        return HttpResponseBadRequest()

    return JsonResponse({'exists': User.objects.filter(username__iexact=request.GET['name']).exists()})

registration.js
$('#id_name').change(function() {
    $.getJSON('/check-username/', {'name': $(this).val()}, function(user) {
        if(user.exists)
            alert('Пользователь с таким именем уже зарегистрирован');
    });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы