Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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中的分页未按预期工作_Python_Django_Django Pagination - Fatal编程技术网

Python Django中的分页未按预期工作

Python Django中的分页未按预期工作,python,django,django-pagination,Python,Django,Django Pagination,我想为所有可用的课程分页,这很容易实现。但现在我被卡住了,因为我还想为学院分页,这将显示被访问学院的具体课程。我有4种模式:学院、系、研究和课程。分页也会显示给各系,但问题是,如果我尝试转到第二页,它会将我重定向到所有课程列表的第二页。或者,如果我更改所有课程的页面,然后尝试访问教员,教员中根本不会显示任何课程 def索引(请求): course\u list=course.objects.all() page=request.GET.GET('page',1) paginator=pagina

我想为所有可用的课程分页,这很容易实现。但现在我被卡住了,因为我还想为学院分页,这将显示被访问学院的具体课程。我有4种模式:学院、系、研究和课程。分页也会显示给各系,但问题是,如果我尝试转到第二页,它会将我重定向到所有课程列表的第二页。或者,如果我更改所有课程的页面,然后尝试访问教员,教员中根本不会显示任何课程

def索引(请求):
course\u list=course.objects.all()
page=request.GET.GET('page',1)
paginator=paginator(课程列表,1)
尝试:
courses=paginator.page(第页)
除第页外,第页:
课程=页码编号。第(1)页
除空页外:
课程=paginator.page(paginator.num_页面)
faculty\u list=faculty.objects.all()
page=request.GET.GET('page2',1)
paginator=paginator(教员列表,1)
尝试:
学院=分页器。第页(第页)
除第页外,第页:
学院=分页者。第(1)页
除空页外:
faculties=paginator.page(paginator.num_页面)
上下文={'courses':课程,
“学院”:学院,
“部门”:Department.objects.all(),
“研究”:StudyProgramme.objects.all(),
“教师”:Teacher.objects.all()
}
返回呈现(请求'courses/index.html',上下文)

所有课程
    {课程%中的课程为%}
  • {%endfor%}
{%如果courses.has_previous%} {%endif%} 第{{courses.number}页,共{{courses.paginator.num_pages} {%如果courses.has_next%} {%endif%}
{院系%的教员为%} {{faculty.name}}课程
    {faculty.department_set.all%} {%用于研究中的研究%} {%if study.department==department%} {课程%中的课程为%} {%if course.study_program==study%}
  • {%endif%} {%endfor%} {%endif%} {%endfor%} {%endfor%}
{%if faculties.has_previous%} {%endif%} 第{{faculties.paginator.num_pages}页{{faculties.number}共{faculties.paginator.num_pages} {%if faculties.has_next%} {%endif%}
{%endfor%}
这不是Django的问题,因为您的视图很可能只处理一个分页参数
page
,该参数将指向课程,因此,如果更改每个模型分页的get参数,它将起作用

例:

##views.py
page=request.GET.GET('page')
##yourtemplate.html
localhost:8000/MYVIEW/?page=2#进入课程
##views.py
page=request.GET.GET('faculties')
##yourtemplate.html
##
localhost:8000/MYVIEW/?faculties=2#转到faculties
等等

编辑:


{%faculties%}将其更改为{%faculties in faculties 2%}并将其从上下文中删除,因为您在重复自己,因为faculties 2和faculties持有相同的查询集。

paginator=paginator(课程列表,1)


paginator=paginator(教员列表,1)


将第二个实例名称更改为
paginator\u two
将解决您的问题

我尝试了类似的方法。我没有成功。请看这里:请在问题本身中共享您的代码片段,因为它将帮助其他人。您的上下文不正确,模板对分页的调用也遵循相同的方式,因此当您调用分页对象时,它将不会返回结果,因为您没有在queryset for循环中使用它。{%for faculties in faculties%}将其更改为{%for faculties in faculties in faculties 2%}并将faculties从您的上下文中删除,因为您正在重复自己,因为faculties 2和faculties拥有相同的查询集,但faculties没有分页对象,无法进入下一页。我重新编辑了上述代码段。此外,如果我执行您刚才提到的操作,任何东西都无法正常工作。
## views.py
page = request.GET.get('page')
## yourtemplate.html
<a href="?page={{ yourcontext }}">yourtext</a>
localhost:8000/MYVIEW/?page=2  # Goes to courses

## views.py    
page = request.GET.get('faculties')
## yourtemplate.html
<a href="?faculties={{ yourcontext }}">yourtext</a>
##
localhost:8000/MYVIEW/?faculties=2 # Goes to faculties