【问题标题】:django pagination doesn't work when click on the same page number单击相同的页码时,django 分页不起作用
【发布时间】:2020-10-15 09:47:04
【问题描述】:

我目前面临两个问题

问题 1:

在 Django 中开发的应用程序。我可以毫无问题地导航到第 1 页或第 2 页,但是 如果假设我在第 1 页上并单击相同的第 1 页链接 URL 将是( 127.0.0.1:8000/query/="?page=1" )我收到该页面的错误

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/query/%3D%22?page=1%22

on the console : 

Not Found: /query/="
[14/Oct/2020 17:46:10] "GET /query/=%22?page=1%22 HTTP/1.1" 404 3710

观看次数

@login_required(login_url='login')
def query(request):
    print("ddd",request)
    tasks = Task.objects.all()

    form = TaskForm()

    if request.method =='POST':

        form=TaskForm(request.POST)
        if form.is_valid():
            form.save()

            return redirect('/')

    products = Task.objects.all()
    paginator = Paginator(products, 5)
    page_number = request.GET.get('page', 1)
    page = paginator.get_page(page_number)
    NoOfProducts = Task.objects.count()

    try:
       xyz = paginator.page(page)
    except PageNotAnInteger:
         xyz = paginator.page(1)
    except EmptyPage:
         xyz = paginator.page(paginator.num_pages)


    print("Price1", page_number)
    print("Price",NoOfProducts)

    if page.has_next():
        next_url = f'?page={page.next_page_number()}'
    else:
        next_url = ''

    if page.has_previous():
        prev_url = f'?page={page.previous_page_number()}'
    else:
        prev_url = ''

    print("next", next_url)
    print("prev", prev_url)




    context = {'tasks':products,'form':form,'Totalprice':Task.get_price_total,'page': page, 'next_page_url': next_url, 'prev_page_url': prev_url,
               'NoOfProducts': NoOfProducts}
    return render(request,'tasks/cart.html',context)

网址

urlpatterns = [
    #path('', views.index, name="list"),
    path('', views.query, name="query"),
    path('create/', views.createTask, name="create"),
    path('update_task/<str:pk>/', views.updateTask, name="update_task"),
    path('register/', views.registerPage,name="register"),
    path('login/', views.loginPage,name="login"),
#   path('login/', views.loginPage,name="login"),
    path('logout/', views.logoutUser,name="logout"),
    path('delete/<str:pk>/', views.deleteTask, name="delete"),
    path('query/', views.query, name="query"),
    path('products/', views.display, name="products"),
    path('dates/', views.showresults, name="search"),
    ]

第二期:

Paginator 方向在我已经指定“justify-content-end”的页面上不起作用,但它仍然显示在页面左侧如何更正?

Main.html

<!DOCTYPE html>
{% load static %}
<style>
    .hello-msg{
    font-size: 18px;
    color:#fff;
    margin-right: 20px;
   }

</style>
<html>
    <head>
           <title>Ecom</title>

           <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

           <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1" />

           <link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}">

     </head>
     <body>

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  <a class="navbar-brand" href="{% url 'query' %}">Home</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="{% url 'create' %}">Create <span class="sr-only">(current)</span></a>
      </li>
        <li class="nav-item active">
        <a class="nav-link" href="{% url 'search' %}">Search <span class="sr-only">(current)</span></a>
      </li>
     </ul>
</div>
   <span class ="hello-msg">    Hello, {{request.user}} </span>
   <span><a class ="hello-msg" href="{% url 'logout'  %}">   Logout</a> </span>

</nav>


    <div class="container">
        {% block content %}

         {% endblock content %}

              <nav aria-label="Page Navigation Example">
                {%if page.paginator %}
                 <ul class="pagination justify-content-end">
                   {%if NoOfProducts > 6 %}
                    <li class="page-item {% if not prev_page_url %} disabled {% endif %} ">

                      <a class="page-link " href="{{ prev_page_url }}" tabindex="-1" aria-disabled="true">Previous</a>
                    </li>

                    {% for n in page.paginator.page_range %}

                       {% if page.number == n %}
                            <li class="page-item active" aria-current="page">
                               <a class="page-link" href=="?page={{n}}">{{n}}<span class="sr-only">(current)</span></a>
                            </li>

                       {% elif n > page.number|add:-3 and n < page.number|add:3  %}

                            <li class="page_item">
                              <a class="page-link" href ="?page={{n}}">{{n}}</a>

                           </li>
                       {% endif %}
                    {% endfor %}

                    <li class="page-item {% if not next_page_url %} disabled {% endif %} ">
                      <a class="page-link" href="{{next_page_url}}">Next</a>
                    </li>
                   {% endif %}
                  </ul>
                {% endif %}
              </nav>

     </div>



     <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
     <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>

     <script type="text/javascript" src="{% static 'js/cart.js' %}"></script>
</body>
</html>

我正在传递“但仍然在左侧页面上加载分页。有人可以帮助我。

【问题讨论】:

  • 我尝试使用它,但如果我仔细查看我的代码,则无法理解代码,{{ ( {{n}}(current) ) }} 这将被转换为(127.0.0.1:8000/query/="?page=1")我在这一行出现错误但它被定义仍然无法理解我缺少什么

标签: django pagination


【解决方案1】:
  1. 您的模板中有href==,但它应该是href=

  2. 请尝试为您的 HTML 代码添加样式:

...
<style>
.container {
    position: absolute;
    bottom: 0;
}
</style>

    <div class="container">
    ...

【讨论】:

  • 谢谢,是的,href= 解决了这个问题,路径查询只使用斜线,关于第二个问题的任何想法
  • 非常感谢您提供的解决方案我分离了块内容,现在它完美地工作了
猜你喜欢
  • 2016-11-29
  • 2023-04-08
  • 2014-11-20
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 2011-03-04
  • 2014-02-16
  • 2015-06-20
相关资源
最近更新 更多