рендеринг в ответ не работает для jquery ajax-запроса

Когда вы регистрируете объекты на консоли, текущее состояние объекта не снимается и отображается (как вы могли ожидать); вместо этого консоль получает живую ссылку на объект. Когда вы расширяете его в консоли, вы видите его содержимое с момента его развертывания, а не с момента его регистрации. .

Таким образом, очевидно, что ваши коллекции пусты, когда вы выполняете регистрацию, а затем получаете свои элементы позже. Вы просто хотите, чтобы ваш код дождался заполнения коллекций. Например, если вы выполняете это сразу же после запуска вашего сценария, рассмотрите возможность размещения сценария в конце документа непосредственно перед закрывающим тегом .

Очень тонкая синяя (i) Значок рядом с объектом имеет полезную всплывающую подсказку; если вы его наводите, вы видите:

В нем говорится: «Значение объекта слева было снято при регистрации в журнале, значение ниже было оценено только сейчас».

3
задан terecal 28 March 2019 в 04:40
поделиться

1 ответ

Я предлагаю вам попробовать брекеты Django. https://django-braces.readthedocs.io/en/latest/ . Он имеет встроенные функции для ajax

from braces.views import AjaxResponseMixin
from braces.views import JsonRequestResponseMixin

class PostDetailAjaxView(AjaxResponseMixin, JsonRequestResponseMixin, View):

    def get_ajax(self, request, *args, **kwargs):
        post_pk = request.GET.get('pk', None)
        post = Post.objects.get(pk=post_pk)

        data = {
             'title': post.title,
             'summary': truncatewords(post.content, 100)
        }
        return self.render_json_response(data)

Я ничего не знаю о модели, поэтому я просто использовал ваш пример в качестве ссылки. Затем вы можете создать отдельный URL для PostDetailAjaxView. Теперь вы можете вызвать его через jquery, используя GET в качестве метода. Если вы хотите использовать другие методы, вы можете использовать post_ajax (), put_ajax (), delete_ajax () и т. Д.

0
ответ дан martinii 28 March 2019 в 04:40
поделиться
Другие вопросы по тегам:

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