簡體   English   中英

將 URL Kwargs 導入 Django ListView 對象屬性

[英]Getting URL Kwargs into Django ListView Object Attributes

我有一個基於類的視圖,我正在嘗試在其中實現面包屑。

我正在使用 django-bootstrap-breadcrumbs 和 django-view-breadcrumbs,但由於我們獨特的 URL 結構,我們在幾乎所有 URL 的 URL 中都有一個 ID。

我已經適當地設置了面包屑,但需要將person_id kwarg 放入 ListView 上的 'crumbs' 屬性中

網址如下所示:

    path(
        "<person_id>/trees/",
        views.TreeListView.as_view(),
        name="tree_list",
    ),
    path(
        "<person_id>/trees/<pk>/",
        views.TreeDetailView.as_view(),
        name="tree_view",
    ),
    path(
        "<person_id>/trees/<tree_id>/planes/",
        views.PlaneListView.as_view(),
        name="plane_list",
    ),
    path(
        "<person_id>/trees/<tree_id>/cord/<pk>/",
        views.CordDetailView.as_view(),
        name="cord_view",
    ),

我已經根據文檔設置了我的視圖:

class TreeListView(
        LoginRequiredMixin,
        UserPassesTestMixin,
        ListBreadcrumbMixin,
        ListView
    ):
    # pylint: disable=too-many-ancestors
    login_url = "/login/"
    model = Tree
    template_name = "tree_list"
    crumbs = [('My Test Breadcrumb', reverse('tree_list', args=[self.kwargs["person_id"]]))]

正如您在最后一行中看到的那樣 - 面包屑應該用於創建顯示在頁面上的面包屑。

問題是我收到一個錯誤(這看起來很明顯),該對象沒有“自我”項目。

我的問題是 - 我如何從 URL 中獲取那個person_id以便我可以將它作為參數傳遞給 URL?

您可以將crumbs定義為屬性:

class TreeListView(
        LoginRequiredMixin,
        UserPassesTestMixin,
        ListBreadcrumbMixin,
        ListView
    ):
    # pylint: disable=too-many-ancestors
    login_url = "/login/"
    model = Tree
    template_name = "tree_list"

    @property
    def crumbs(self):
        return [('My Test Breadcrumb', reverse('tree_list', args=[self.kwargs["person_id"]]))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM