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