Когда вы регистрируете объекты на консоли, текущее состояние объекта не снимается и отображается (как вы могли ожидать); вместо этого консоль получает живую ссылку на объект. Когда вы расширяете его в консоли, вы видите его содержимое с момента его развертывания, а не с момента его регистрации. .
Таким образом, очевидно, что ваши коллекции пусты, когда вы выполняете регистрацию, а затем получаете свои элементы позже. Вы просто хотите, чтобы ваш код дождался заполнения коллекций. Например, если вы выполняете это сразу же после запуска вашего сценария, рассмотрите возможность размещения сценария в конце документа непосредственно перед закрывающим тегом
.
Очень тонкая синяя (i) Значок рядом с объектом имеет полезную всплывающую подсказку; если вы его наводите, вы видите:
В нем говорится: «Значение объекта слева было снято при регистрации в журнале, значение ниже было оценено только сейчас».
Я предлагаю вам попробовать брекеты 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 () и т. Д.