【问题标题】:Trying to use django pagination I get this error "TemplateDoesNotExist at /videos/"尝试使用 django 分页时出现此错误“TemplateDoesNotExist at /videos/”
【发布时间】:2016-01-08 05:44:25
【问题描述】:

尝试在 Django 中使用分页时,我不断收到以下错误消息。我已经尝试过,但似乎无法弄清楚这一点。本来可以不用它,但现代网站需要分页。

TemplateDoesNotExist at /videos/

这就是我的观点。py

from django.shortcuts import render, get_object_or_404

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger


from .models import Video


def index(request):
    page = "video/index.html"
    title = "Video"
    # videos = Video.objects.all()

    videos_list = Video.objects.all()
    paginator = Paginator(videos_list, 25)  # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        videos = paginator.page(page)
    except PageNotAnInteger:

        videos = paginator.page(1)
    except EmptyPage:

        videos = paginator.page(paginator.num_pages)

    context = {
        "videos": videos,
        "title": title,
    }
    return render(request, page, context)

这就是我的视频/索引中的内容

{% block content %}
<div id="content"><h1 style="color: #f5f5f5; margin:0">Video index</h1></div>

{% for r in videos %}

    <div class="index-box">
        <div >
            <img src="{{ r.img }}" style="width:241px; height: 200px">
        </div>
        <a href="{% url 'video:detail' r.slug %}">
            <h5 style="margin-left: 10px ">{{ r.title |truncatechars:15}}</h5>
        </a>
    </div>

{% endfor %}




<div class="pagination">
    <span class="step-links">
        {% if videos.has_previous %}
            <a href="?page={{ videos.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ videos.number }} of {{ videos.paginator.num_pages }}.
        </span>

        {% if videos.has_next %}
            <a href="?page={{ videos.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>

{% endblock %}

我的文件结构

video
   |-migrations
   |-static
   |-templates
        |-includes
        |-video
            |-detail.html
            |-index.html

我怎样才能纠正这个问题以使其正常工作?欢迎任何和所有帮助。我试图修改文档中的内容以满足我的需要,但我不知道我哪里出错了。

【问题讨论】:

  • 我认为它应该与分页无关,只是django找不到你的html文件。你的文件结构是什么样的?
  • @ShangWang 见上文

标签: python django pagination


【解决方案1】:

你声明page 2 次。

def index(request):
    **page = "video/index.html"**
    title = "Video"
    # videos = Video.objects.all()

    videos_list = Video.objects.all()
    paginator = Paginator(videos_list, 25)  # Show 25 contacts per page

    **page = request.GET.get('page')**
    try:

【讨论】:

    【解决方案2】:

    我解决了。

    page = "video/index.html"
    

    没有被读取。我不得不将它从顶部移到底部

    所以我从这里开始

    page = "video/index.html" <------------(not being read)
    title = "Video"
    # videos = Video.objects.all()
    
    videos_list = Video.objects.all()
    paginator = Paginator(videos_list, 25)  # Show 25 contacts per page
    
    page = request.GET.get('page')
    try:
        videos = paginator.page(page)
    except PageNotAnInteger:
    
        videos = paginator.page(1)
    except EmptyPage:
    
        videos = paginator.page(paginator.num_pages)
    
    context = {
        "videos": videos,
        "title": title,
    }
    return render(request, page, context) <-------(page has no value)
    

    定义索引(请求):

    title = "Video"
    # videos = Video.objects.all()
    
    videos_list = Video.objects.all()
    paginator = Paginator(videos_list, 2)  # Show 25 contacts per page
    
    page = request.GET.get('page')
    try:
        videos = paginator.page(page)
    except PageNotAnInteger:
    
        videos = paginator.page(1)
    except EmptyPage:
    
        videos = paginator.page(paginator.num_pages)
    
    page = "video/index.html" <------------(being read)
    context = {
        "videos": videos,
        "title": title,
    
    }
    return render(request, page, context) <------------(page has value)
    

    【讨论】:

    • 在同一视图中使用page 作为页码和模板名称是个坏主意。最好重命名template = "video/index.html",然后重命名return render(request, template, context)。这样template = "video/index.html"的位置就无所谓了。
    猜你喜欢
    • 2021-04-03
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2017-02-05
    相关资源
    最近更新 更多