Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在基于类的视图Django中使用url参数_Python_Django_Django Class Based Views_Class Based Views - Fatal编程技术网

Python 在基于类的视图Django中使用url参数

Python 在基于类的视图Django中使用url参数,python,django,django-class-based-views,class-based-views,Python,Django,Django Class Based Views,Class Based Views,我有一个使用CreateView CBV的视图(CreateWorkRelationView)。在URL中,传递了一个我需要经常引用的参数(user)。是否可以将对象用户设置在我的类中的函数之外?那么,您是否能够从函数外部访问kwargs 所以我基本上只想在我的类中添加以下行 user = get_object_or_404(Contact.pk=kwargs['user']) 然而,目前这种情况又出现了 NameError:未定义名称“kwargs” 这是我的课 class CreateWo

我有一个使用CreateView CBV的视图(CreateWorkRelationView)。在URL中,传递了一个我需要经常引用的参数(user)。是否可以将对象用户设置在我的类中的函数之外?那么,您是否能够从函数外部访问kwargs

所以我基本上只想在我的类中添加以下行

user = get_object_or_404(Contact.pk=kwargs['user'])
然而,目前这种情况又出现了

NameError:未定义名称“kwargs”

这是我的课

class CreateWorkRelationView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
    template_name = 'groups/group_form.html'
    form_class = WorkRelationForm
    model = WorkRelation
    title = "Add a work relation"
    success_message = "Workrelation was successfully created."


    def form_valid(self, form):
        user = get_object_or_404(Contact, pk=self.kwargs['user'])
        form.instance.contact = user
        return super(CreateWorkRelationView, self).form_valid(form)

    def get_success_url(self):
        return reverse_lazy('contacts:contact_detail', self.kwargs['user'])
我想这样做的原因是:

  • 我想在标题字符串中使用此对象
  • 我将添加更多的函数,它们都需要这个对象

  • 不,那不可能奏效;在定义类时,您没有用户或kwargs,甚至没有请求。您需要在请求时调用的一个方法中执行此操作;可能是
    get\u context\u data
    get\u object

    不,这不可能工作;在定义类时,您没有用户或kwargs,甚至没有请求。您需要在请求时调用的一个方法中执行此操作;可能
    get\u context\u data
    get\u object

    我设法做到这一点的方法是使用FormView

    在我的URL.py中,我有

    regex=r'^my/path/(?P<pk>\d+)$',
    

    它工作得很好。

    我设法做到这一点的方法是使用FormView

    在我的URL.py中,我有

    regex=r'^my/path/(?P<pk>\d+)$',
    

    它工作得很好。

    但是我能够在其他函数中引用此上下文数据吗?如果您将其分配给实例属性,则可以。但是我能够在其他函数中引用此上下文数据吗?如果您将其分配给实例属性,是的。如果您正在查找登录用户,您可以使用self.request.user,但我可能遗漏了一些内容如果您正在查找登录用户,您可以使用self.request.user,但我可能遗漏了一些内容为什么要等待此答案获得+1?谢谢,我浪费了好几个小时才找到这个答案。为什么这么久这个答案才得到+1?谢谢,我浪费了好几个小时才找到这个答案。