pkchenwang 2024-05-06 19:10 采纳率: 0%
浏览 4

django如何在一个HTML下设计多个导航键并且每个导航页面带有翻页功能(相关搜索:管理系统)

问题遇到的现象和发生背景

用django设计一个部门书籍,手机管理系统,导航信息大致如下,分书籍导航标签和手机导航标签。

img

目前整个页面在一个lib_list.html中,已做好书籍的翻页功能,如下。

img

但不太清楚如何进一步实现手机管理系统翻页功能,书籍翻页功能views内代码如下

def lib_list(request):
    data_dict = {}
    value = request.GET.get("q")
    if value:
        data_dict["bookname__contains"] = value
    # res=models.LibInfo.objects.filter(**data_dict)
    # print(res)
    # queryset=models.LibInfo.objects.all()

    # queryset.borrower=""
    # 获取所有图书的列表

    # 页码计算
    page = int(request.GET.get('page', 1))
    page_size = 10
    start = (page - 1) * page_size
    end = page * page_size
    queryset = models.LibInfo.objects.filter(**data_dict)[start:end]
    for obj in queryset:
        print(obj.id, obj.bookname, obj.borrower)

    total_count = models.LibInfo.objects.filter(**data_dict).count()
    total_page_count, div = divmod(total_count, page_size)
    if div:
        total_page_count += 1

    if total_page_count <= 2 * 10 + 1:
        start_page = 1
        end_page = total_page_count
    else:
        start_page = page - 5
        end_page = page + 5

    page_str_list = []
    for i in range(start_page, end_page + 1):
        if i == page:
            ele = '<li class="page-item active"><a class="page-link" href="?page={}">{}</a></li>'.format(i, i)
        else:
            ele = '<li class="page-item"><a class="page-link" href="?page={}">{}</a></li>'.format(i, i)
        page_str_list.append(ele)
    page_string = mark_safe("".join(page_str_list))

    return render(request, 'lib_list.html', {"queryset": queryset, "page_string": page_string})
操作环境、软件版本等信息

Win10, python 3.7

我想要达到的结果

请教各位如何再增加手机管理的翻页功能?

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-05-06 19:15
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    针对手机管理系统的翻页功能,可以按照如下步骤实现:
    1. 在template文件夹下新建一个mobile_list.html文件,作为手机管理系统的页面模板。
    2. 在views.py中新增一个mobile_list函数,并在函数中编写相应的查询逻辑和翻页逻辑,示例代码如下:
    def mobile_list(request):
        data_dict = {}
        value = request.GET.get('q')
        if value:
            data_dict["phonenumber__contains"] = value
        
        page = int(request.GET.get('page', 1))
        page_size = 10
        start = (page - 1) * page_size
        end = page * page_size
        queryset = models.MobileInfo.objects.filter(**data_dict)[start:end]
        
        total_count = models.MobileInfo.objects.filter(**data_dict).count()
        total_page_count, div = divmod(total_count, page_size)
        if div:
            total_page_count += 1
        
        if total_page_count <= 2 * 10 + 1:
            start_page = 1
            end_page = total_page_count
        else:
            start_page = page - 5
            end_page = page + 5
        
        page_str_list = []
        for i in range(start_page, end_page + 1):
            if i == page:
                ele = '<li class="page-item active"><a class="page-link" href="?page={}">{}</a></li>'.format(i, i)
            else:
                ele = '<li class="page-item"><a class="page-link" href="?page={}">{}</a></li>'.format(i, i)
            page_str_list.append(ele)
        
        page_string = mark_safe("".join(page_str_list))
        
        return render(request, "mobile_list.html", {"queryset": queryset, "page_string": page_string})
    
    1. 在urls.py中新增一个url映射规则,将mobile_list函数映射到/mobile_list路径下,示例代码如下:
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', views.lib_list, name="lib_list"),
        path('mobile_list/', views.mobile_list, name="mobile_list"),
    ]
    
    1. 在mobile_list.html中按照书籍管理系统页面的格式编写相应的HTML代码,并使用Django模板语言渲染翻页功能所需的数据,示例代码如下:
    {% extends 'base.html' %}
    {% block content %}
    <div class="container">
      <h2>Mobile Management</h2>
      <form method="GET" action="{% url 'mobile_list' %}">
        <div class="form-group">
          <label for="q">Search:</label>
          <input type="text" class="form-control" id="q" name="q" value="{{ request.GET.q }}">
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
        <a class="btn btn-secondary" href="{% url 'mobile_list' %}">Clear</a>
      </form>
      <br>
      <table class="table">
        <thead>
          <tr>
            <th>Phone Number</th>
            <th>Borrower</th>
            <th>Borrow Date</th>
          </tr>
        </thead>
        <tbody>
          {% for obj in queryset %}
          <tr>
            <td>{{ obj.phonenumber }}</td>
            <td>{{ obj.borrower }}</td>
            <td>{{ obj.borrow_date }}</td>
          </tr>
          {% endfor %}
        </tbody>
      </table>
      <nav aria-label="...">
        <ul class="pagination">
          {{ page_string }}
        </ul>
      </nav>
    </div>
    {% endblock %}
    

    最后,访问 http://localhost:8000/mobile_list 即可查看手机管理系统页面并使用翻页功能。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月6日

悬赏问题

  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…