Django、CBV和pk_url_kwarg缺失

Django、CBV和pk_url_kwarg缺失,django,Django,我在学django。我有最新的django和Python 3.7.x 我有一个关于self.pk\u url\u kwarg的问题,以及它是如何创建的以及何时创建的。我在:上看过医生,但我没有找到我希望的答案 具体来说,我在url.py文件中有一个条目,如: ... path( 'Student/createFromProfile/<uuid:profile_id>', student.CreateFromProfile.as_view(), name="st

我在学django。我有最新的django和Python 3.7.x

我有一个关于self.pk\u url\u kwarg的问题,以及它是如何创建的以及何时创建的。我在:上看过医生,但我没有找到我希望的答案

具体来说,我在
url.py
文件中有一个条目,如:

...
path(
    'Student/createFromProfile/<uuid:profile_id>',
    student.CreateFromProfile.as_view(),
    name="student_create_from_profile"
),
...
注意
get
方法中的
try
id=self.kwargs[“profile\u id”]
部分。我试图使用
id=self.kwargs[self.pk\u url\u kwarg]
,但我得到一个django调试页面,上面说它不知道
pk\u url\u kwarg
是什么。我可以在PyCharm调试器中停止并检查
self
,实际上,它没有
pk\u url\u kwarg
的条目。这是特别奇怪的,因为我在其他视图中使用它


我缺少什么?

pk\u url\u kwarg
是URLConf关键字参数的名称,默认情况下为
pk
。在您的特定情况下,您应该将其设置为
profile\u id

@method_decorator(verified_email_required, name='dispatch')
class CreateFromProfile(CreateView):

    model = Profile
    success_url = '/Members'

    # Here we're setting correct pk_url_kwarg
    pk_url_kwarg = 'profile_id'

    def get(self, request, *args, **kwargs):

        try:
            account_holder = Profile.objects.get(
                id=self.kwargs[self.pk_url_kwarg]
            )
        except ObjectDoesNotExist:
            messages.error(
                request,
                "Unknown Profile ID."
            )
            return HttpResponseRedirect(self.success_url)
这是因为您在url路径中指定了


第二种方法是将url配置重写为
'Student/createFromProfile/'
。这样,
pk\u url\u kwarg
应该可以使用默认值。

我有其他CBV,它们具有类似的url和命名参数。这些似乎自动填充了一个
self.pk\u url\u kwarg
。我当然可以自己设定这个值。非常感谢。
@method_decorator(verified_email_required, name='dispatch')
class CreateFromProfile(CreateView):

    model = Profile
    success_url = '/Members'

    # Here we're setting correct pk_url_kwarg
    pk_url_kwarg = 'profile_id'

    def get(self, request, *args, **kwargs):

        try:
            account_holder = Profile.objects.get(
                id=self.kwargs[self.pk_url_kwarg]
            )
        except ObjectDoesNotExist:
            messages.error(
                request,
                "Unknown Profile ID."
            )
            return HttpResponseRedirect(self.success_url)