我是django和django_tables2的新手。我试图在我的应用程序视图中使用django_tables2来创建一个表。我正在尝试使用此link作为教程。在我的IndexView中,我有以下内容:
在我的view.py
中class IndexView(generic.ListView):
model = Post.objects.all()
template_name = 'post/index.html'
table = Post(data_list)
RequestConfig(request).configure(table)
在我的index.html中:
{% load render_table from django_tables2 %}
{% block content %}
<h1>Posts</h1>
{% render_table post_list %}
{% endblock %}
我收到以下错误:
名称'data_list'未定义
如何导入和使用data_list?
感谢您的帮助。
答案 0 :(得分:0)
您的观点可能如下所示:
def IndexView(request):
template_name = 'post/index.html'
return render(request, template_name, {"post_list": Post.objects.all()})
答案 1 :(得分:0)
我假设您正试图在表格中显示所有帖子。 所以你已经完成了:
model = Post.objects.all()
然后使用帖子填充表格:
table = PostTable(model)
您缺少表格类型,是否有table.py?
并且data_list是未定义的,它是django_tables2中不是某种定义类型的变量。你需要使data_list等于某些东西(例如模型),因为这就是你试图填充表的样子。
答案 2 :(得分:0)
如果未定义PostTable,请先在views.py中定义,如下例所示:
class ProjectTable(tables.Table):
title = tables.LinkColumn('project-detail',args=[A('pk')],verbose_name="Title")
amount = tables.Column(verbose_name="Project Funds")
start = tables.Column(verbose_name="Project Started")
end = tables.Column(verbose_name="Project Ended")
location = tables.Column(verbose_name="Project Location")
然后使用查询集
填充该表def list_projects(request):
projects = Project.objects.all()
etable = ProjectTable(projects)
RequestConfig(request, paginate={"per_page": 7}).configure(etable)
return render(request, "projectsapp/list.html", {'table':etable})
所以在示例中,data_list等同于项目,这意味着您必须使用从FOO.objects.all()生成的查询集填充PostTable