首页 > 解决方案 > 必须使用对象 pk 或 slug 调用 Django 通用详细视图,但我的 URL 已经有 PK

问题描述

/mini_fb/profile/1/delete_status/14 处的 AttributeError 通用详细视图 DeleteStatusMessageView 必须使用 URLconf 中的对象 pk 或 slug 调用。

我的 PK 1 和 14 不是已经在 URL 中了吗?为什么我会收到此错误?

<a href="{% url 'delete_status' profile_pk=profile.pk status_pk=x.pk %}">delete</a>
class DeleteStatusMessageView(DeleteView):
    '''A class for the view for deleting status messages.'''

    template_name = 'mini_fb/delete_status_message.html'
    queryset = StatusMessage.objects.all()

    def get_context_data(self, **kwargs):
        '''Return a dictionary with context data for this template to use.'''

        context = super(DeleteStatusMessageView, self).get_context_data(**kwargs)
        st_msg = StatusMessage.objects.get(pk=self.kwargs['status_pk'])
        context['st_msg'] = st_msg

        return context # return the dictionary

标签: pythondjango

解决方案


DeleteView 参数应准确命名为 pk 或 slug

path('profile/<int:profile_pk>/delete_status/<int:pk>', DeleteStatusMessageView.as_view(), name='delete_status')

您可以设置pk_url_kwarg是否要覆盖默认名称(SingleObjectMixin 文档


推荐阅读