覆盖列表视图属性



当覆盖类视图的属性时,它带有:

class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'

我认为应该是:

class IndexView(generic.ListView):
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'

Django 如何通过直接赋值变量来实现它?

我没有看Django GenericView的源代码, 您指出的变量是我们可以调用的变量class Variables,这些是 ListView 类的变量。基本上,它们是所有实例共享的类变量。
而在__init__内部,它们被称为instance variable每个实例都是唯一的

一个小例子(不够好(:

class MyView:
template_name = 'default_name.html' # class variable shared by all instances
def __init__(self,name):
self.name = name  # instance variable unique to each instance
def get_template_name(self):
return self.name

您展示的第一种情况是设置变量的示例。 在第二种情况下,您实际上是在定义局部变量,但我假设您打算像这样分配实例变量:

def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs):
self.template_name = 'polls/index.html'
self.context_object_name = 'latest_question_list'

退房 以及这个堆栈溢出帖子的答案,以及另一个关于差异的讨论。

最新更新