Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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:DetailView-pk或slug_Python_Django - Fatal编程技术网

Python Django:DetailView-pk或slug

Python Django:DetailView-pk或slug,python,django,Python,Django,旧视图.py 新视图.py 错误:必须使用对象pk或slug调用eneric detail view TestDetailView 问题:请告诉我,我应该如何在new views.py中传递id 似乎正确的决定是覆盖get\u object,如下所示: def get_object(self): return get_object_or_404(TestGroup, id = id) {% url 'foo.views.testgroup_report_builder' gro

旧视图.py

新视图.py

错误:必须使用对象pk或slug调用eneric detail view TestDetailView

问题:请告诉我,我应该如何在new views.py中传递id

似乎正确的决定是覆盖
get\u object
,如下所示:

def get_object(self):
        return get_object_or_404(TestGroup, id = id)
{% url 'foo.views.testgroup_report_builder' group.id %}
我也尝试过这个解决方案:

return TestDetailView.as_view(queryset = queryset, context_object_name = 'group')(request, pk = id)
但是我得到了'foo.views.testgroup_edit'的
相反的结果,其中未找到参数'(u'group.id',)'和关键字参数'{}'。

我这样称呼它:

def get_object(self):
        return get_object_or_404(TestGroup, id = id)
{% url 'foo.views.testgroup_report_builder' group.id %}

您不会像这样使用基于类的视图。他们是班级。您应该完全放弃
foo
函数,只需从url.py中引用TestDetailView。如果您需要在视图中执行一些额外的自定义逻辑(当前在foo中),那么就将TestDetailView子类化并在那里执行。

我不太理解这一点。如果我们将所有代码移动到url.py,那么视图点是什么?对我来说,它将是空的。谁说过要将所有代码移动到url.py?您可以将代码保存在views.py、TestDetailView类或其子类中。您直接从url.py.Ok指向该类,看起来我开始理解了。这就是为什么它称为基于类。我直接从URL.py调用TestDetailView.as_view,但重写get()方法,所以它以我需要的方式处理请求。是的。尽管查看代码,但您可能希望覆盖的方法是获取上下文数据。