Как отправить ответ от функции представления Django во всплывающее окно HTML

Итак, мое приложение работает следующим образом: 1- пользователь кликает и функция вызывает ajax jquery отправляет некоторые данные в функцию в views.py, Готово! 2- в функции будет произведен некоторый процесс. некоторые данные готовы. Готово! 3- Я хочу показать данные в html формате как всплывающее окно.

Итак, я застрял на шаге 3. Я новичок в этом деле и не нашел никакой прямой инструкции. Вы можете найти мой шаг 1 в Как отправить простые данные с помощью Ajax jQuery в views.py в Django?

Заранее спасибо

Это почти так же просто, как и любое другое представление. Просто верните рендер, и вы можете использовать синтаксис шаблонов django для обработки контекстных данных. Вам нужно только написать ajax-функцию (шаг 1), которая создает запрос, представление, которое принимает его и возвращает данные (шаг 2). Внутри функции ajax success из шага 1 добавьте данные в ваш HTML (или создайте всплывающее окно)

Обязательно используйте инструменты разработчика, если вы застряли между шагом 2 и 3. Если django возвращает данные, вы сможете просмотреть их в форме ответа XHR

# The HTML returned mainly consists of a javascript lib 
@login_required
def barcode_scan(request):
    # usually you would fill this page with some context data
    return render(request, "barcode.html")


# View for accepting ajax requests and for returning more data
@login_required
def barcode_view(request, tracking):
    shipment = get_object_or_404(PhysicalShipment, tracking_id=tracking)

    if request.method == "POST":

        if shipment.is_returnable():
            # ... some more logic here ...
            customer = shipment.customer
            content = shipment.content
            context = {
                "customer": customer,
                "content": content,
                # ...
                "canreturn": False,
            }
            return render(request, "barcode_snippet.html", context)
        else:
            success = False
            error_message = shipment.get_status_error_message()
            return JsonResponse({"success": success, "error": error_message})

    elif request.GET.get("ajax"):
        """ displays barcode shipment information """
        customer = shipment.customer
        content = shipment.content
        context = {
            "customer": customer,
            "content": content,
            # ...
            "canreturn": shipment.is_returnable(),
        }
        return render(request, "barcode_snippet.html", context)

    return render(request, "barcode.html")

В моем примере barcode.html содержит js-баркодсканер. После обнаружения кода он вызовет представление с параметром GET ?ajax=True и с кодом отслеживания_кода. Сервер ответит фрагментом barcode_snippet, который содержит контекстные данные о содержимом и клиенте. На основе флага canreturn пользователь сможет нажать на ссылку в окне подробностей, на этот раз он разместит данные, которые затем вызовут некоторые действия на стороне сервера. Снова возвращается фрагмент barcode_snippet, на этот раз действие запрещено

Затем я использую JQuery, чтобы прикрепить ответ (barcode_snippets) к моему сайту.

success: function (response) {
    $("#results").append(response);
}
Вернуться на верх