Wagtail:创建自定义 API 端点

Laz*_*nds 3 python django wagtail

我创建了一个名为“Spotlights”的 Snippet,我想知道如何使用 Wagtail API 为 Snippet 数据创建自定义端点。我最好的猜测是:

api_router.register_endpoint('Spotlights', BaseAPIEndpoint)
Run Code Online (Sandbox Code Playgroud)

那里的第一个 arg 是建立端点的名称还是引用某些内容?

Laz*_*nds 7

我已经想通了:只需继承 Wagtail 的 BaseAPIEndpoint。例如:

端点.py

from wagtail.api.v2.endpoints import BaseAPIEndpoint

class SpotlightsAPIEndpoint(BaseAPIEndpoint):
    ...
    model = Spotlight
Run Code Online (Sandbox Code Playgroud)

api.py

from .endpoints import SpotlightsAPIEndpoint

api_router.register_endpoint('spotlights', SpotlightsAPIEndpoint)
Run Code Online (Sandbox Code Playgroud)

此外,还有很多方法可以自定义它。只需查看 Wagtail 存储库中的 endpoints.py 文件:https : //github.com/wagtail/wagtail/blob/master/wagtail/api/v2/endpoints.py

  • @Bikashkharel 您可以通过像这样指定字段来选择要显示的字段,在`model = Spotlight` 之后添加`body_fields = BaseAPIEndpoint.body_fields + ['title', 'description'] # etc` 并在新行上添加`listing_default_fields = BaseAPIEndpoint。 listing_default_fields + ['title', 'description']` (4认同)