看,我正在通过我自己的例子来玩Django文档。 我只是通过改变代码的很少部分来表达一种给出不同ouptuts的行为:
带着LISTVIEW:
Views.py片段:
class UsuarioListView(ListView):
model = Usuario
def get_context_data(self, **kwargs):
context = super(UsuarioListView, self).get_context_data(**kwargs)
return context
Urls.py:
url(r'^listaUsuarios/',UsuarioListView.as_view(),name='listado_usuarios'),
访问时给予结果:
USUARIOS
luis
paco
sonia
正确列出我拥有的3位用户, 但!如果我尝试使用基于django
示例的TEMPLATE VIEWviews.py:
class UsuarioListView(TemplateView):
template_name="listado_usuarios.html"
def get_context_data(self, **kwargs):
context = super(UsuarioListView, self).get_context_data(**kwargs)
return context
(来自django.views.generic.base导入TemplateView)
Urls.py:
url(r'^listaUsuarios/',UsuarioListView.as_view(),name='listado_usuarios'),
网址保持不变,输出为:
USUARIOS
No hay usuarios.
(没有用户)
那么,这怎么可能,一个显示我拥有的3个用户,另一个显示没有用户。 顺便说一句,即使模板是正确的,这里也是:
<h1>Usuarios</h1>
<ul>
{% for u in object_list %}
<li>{{ u.nombre}}</li>
{% empty %}
<li>No hay usuarios.</li>
{% endfor %}
</ul>
对不起,如果这是一个非常愚蠢的问题,或者我在这里忘记了什么。希望有人可以让我毫无疑问...... 此外,&#34;用户&#34;我列出的对应于我创建的模型,而不是django用户表。
非常感谢。
答案 0 :(得分:1)
因此,如果您使用带有指定模型的ListView
,它会根据您在该模型中的条目自动生成object_list
。
另一方面,如果您使用的是TemplateView
,并且想要遍历object_list
,则必须先生成它,因为TemplateView
不会这样做。
如果您进入TemplateView
,get_context_data()
并执行:context['object_list'] = Usuario.objects.all()
ListView
生成了一个object_list
,其中包含您指定的模型中的所有对象,并将其发送到上下文,而TemplateView
需要您手动生成上下文数据。