与 Django 通用视图中的 pk 不同的 url 路径
Different url path than pk in Django Generic View
我正在使用 DetailView 来显示一个模板,其中包含关于我的模型中的对象的信息。
我使用 int:pk 作为我的对象的路径,但现在我想从类似 detail/XX-ABC 的东西访问视图(其中 XX-ABC 代表我的模型中的唯一字段)。我没有找到传递此 slug 并显示对象的方法。
path(r'detail/<int:pk>/', views.DetailClientsView.as_view(template_name='clients/clients_details.html',
context_object_name='client'),name='details_client'),
这是我的观点。
class DetailClientsView(DetailView, UpdateView):
model = Clients
form_class = InspectionForm
def get_success_url(self):
return reverse('search:search')
您可以在 url 中指定一个名为 slug
:
的 slug
path(
'detail/<b><slug:slug></b>/',
views.DetailClientsView.as_view(
template_name='clients/clients_details.html',
context_object_name='client'
),
name='details_client'
),
或者您可以给它起另一个名字,例如:
path(
'detail/<<b>slug:client_slug</b>>/',
views.DetailClientsView.as_view(
template_name='clients/clients_details.html',
context_object_name='client'
),
name='details_client'
),
并在视图中指定 slug_url_kwarg
parameter [Django-doc]:
class DetailClientsView(UpdateView):
model = Clients
<b>slug_url_kwarg = 'client_slug'</b>
# …
如果您的 模型 中的 SlugField
名称不是 slug
,您可以设置 slug_field
attribute [Django-doc]:
class DetailClientsView(UpdateView):
model = Clients
slug_url_kwarg = 'client_slug'
<b>slug_field = 'slugfield_from_model'</b>
# …
您通常 而不是 必须使用 DetailView
,因为 UpdateView
也会将对象传递给模板。因此,您可能可以将其实现为“纯”UpdateView
.
我正在使用 DetailView 来显示一个模板,其中包含关于我的模型中的对象的信息。 我使用 int:pk 作为我的对象的路径,但现在我想从类似 detail/XX-ABC 的东西访问视图(其中 XX-ABC 代表我的模型中的唯一字段)。我没有找到传递此 slug 并显示对象的方法。
path(r'detail/<int:pk>/', views.DetailClientsView.as_view(template_name='clients/clients_details.html',
context_object_name='client'),name='details_client'),
这是我的观点。
class DetailClientsView(DetailView, UpdateView):
model = Clients
form_class = InspectionForm
def get_success_url(self):
return reverse('search:search')
您可以在 url 中指定一个名为 slug
:
path(
'detail/<b><slug:slug></b>/',
views.DetailClientsView.as_view(
template_name='clients/clients_details.html',
context_object_name='client'
),
name='details_client'
),
或者您可以给它起另一个名字,例如:
path(
'detail/<<b>slug:client_slug</b>>/',
views.DetailClientsView.as_view(
template_name='clients/clients_details.html',
context_object_name='client'
),
name='details_client'
),
并在视图中指定 slug_url_kwarg
parameter [Django-doc]:
class DetailClientsView(UpdateView):
model = Clients
<b>slug_url_kwarg = 'client_slug'</b>
# …
如果您的 模型 中的 SlugField
名称不是 slug
,您可以设置 slug_field
attribute [Django-doc]:
class DetailClientsView(UpdateView):
model = Clients
slug_url_kwarg = 'client_slug'
<b>slug_field = 'slugfield_from_model'</b>
# …
您通常 而不是 必须使用 DetailView
,因为 UpdateView
也会将对象传递给模板。因此,您可能可以将其实现为“纯”UpdateView
.