[英]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.