如何在Django和Wagtail中使用Ajax调用获取数据

时间:2018-10-29 14:19:20

标签: python django wagtail

我正在将wagtail与Python和Django一起使用。

我的模型如下:

class HomePage(Page):
    logo = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )
    banner_text = RichTextField(blank=True)

    def get_context(self, request):
        context = super().get_context(request)
        context['vehicles'] = get_vehicles("nl")[0:12]
        return context

    content_panels = Page.content_panels + [
        FieldRowPanel([ImageChooserPanel('logo', classname="col4")]classname="full"),
        FieldRowPanel([FieldPanel('banner_text', classname="full") classname="full")
    ]

get_vehicles("nl")如下:

def get_vehicles(lang):
    response = requests.get(API_URL, headers={'Authorization': "Token {}".format(token), "Accept-Language": lang})
    data = json.loads(response.content.decode("utf-8"))
    return data['vehicles']

有什么方法可以将ajax call放在def get_context(self, request):内的那些车辆?

我想在我的home_page.html模板中显示一些微调框,直到所有载具都被取走为止。

我对w完全是陌生的,我不确定该怎么做。

1 个答案:

答案 0 :(得分:0)

q)test: ([key1:"s"$()] col1:"s"$();col2:"s"$();col3:"s"$()) q)`test upsert(`key1`col1`col2`col3)!(string "999"; string "693"; string "943"; string "249") 'type [0] `test upsert(`key1`col1`col2`col3)!(string "999"; string "693"; string "9 43"; string "249") 与此处无关。

您需要以“传统Django风格”进行处理。换句话说,与Wagtail完全不同,您将构建URL模式和JSON视图。

在客户端,以某种循环方式发出这些JSON请求的代码可以接收例如来自主机的某些指示(也就是说,在返回的JSON数据中) ...)“我们完成了……没有更多数据要返回。”看到此消息后,JavaScript代码可能会“发出信号”(无论您在那一侧使用的是哪种JS框架),这都会触发目标页面中嵌入的一段JavaScript代码,从而导致其删除微调框。 / p>