当前位置: 首页 > news >正文

什么类型客户做网站苏州seo网站系统

什么类型客户做网站,苏州seo网站系统,手工灯笼100种,wordpress免费手动采集插件需求 基于ListView,创建一个列表视图,用于展示"BookInfo"表的信息要求提供分页提供对书名,作者,描述的查询功能 示例展示: 1. 数据模型 models.py class BookInfo(models.Model):titlemodels.CharField(verbose_name"书名",max_length100)authormode…

需求

  1. 基于ListView,创建一个列表视图,用于展示"BookInfo"表的信息
  2. 要求提供分页
  3. 提供对书名,作者,描述的查询功能

示例展示:
在这里插入图片描述

1. 数据模型

models.py

class BookInfo(models.Model):title=models.CharField(verbose_name="书名",max_length=100)author=models.CharField(verbose_name="作者",max_length=100)desc=models.TextField(verbose_name="介绍")create_at=models.DateTimeField(verbose_name="创建时间",auto_now=True)update_at=models.DateTimeField(verbose_name="更新时间",auto_now_add=True)

2. 视图

views.py

from functools import reduce
from typing import Any
from django.shortcuts import render,redirect  
from django.db.models import Q
from django.views.generic import ListView
from django.views.generic.detail import DetailView
from .models import *
from .forms import *class BookListView(ListView):model=BookInfotemplate_name = "demo1/book_list.html"paginate_by = 10def get_queryset(self):title = self.request.GET.get('title')author = self.request.GET.get('author')content = self.request.GET.get('content')# 如果有任意参数不为空,则构建Q对象进行查询queries = [Q(titile__icontains=title) if title else Q(),Q(author__icontains=author) if author else Q(),Q(desc__icontains=content) if content else Q()]# 使用Q对象的&操作符组合查询条件queryset = BookInfo.objects.filter(reduce(lambda x, y: x & y, queries)) if queries else BookInfo.objects.all()return querysetdef get_context_data(self, **kwargs):context = super().get_context_data(**kwargs)# 保留查询参数到分页链接query_params = self.request.GET.copy()if 'page' in query_params:del query_params['page']  # 移除现有的页码参数以避免冲突paginator = context['paginator']page_numbers_range = 5  # 您可以根据需要调整显示的页码范围大小max_index = len(paginator.page_range)page = self.request.GET.get('page')current_page = int(page) if page else 1start_index = int((current_page - 1) / page_numbers_range) * page_numbers_rangeend_index = start_index + page_numbers_rangeif end_index >= max_index:end_index = max_indexpage_range = paginator.page_range[start_index:end_index]context['page_range'] = page_rangecontext['query_params'] = query_params.urlencode()  # 将查询参数编码为URL字符串return contextdef get(self, request, *args, **kwargs):# 如果是重定向回来的,需要处理paginate_by参数if 'paginate_by' in request.GET:try:paginate_by = int(request.GET['paginate_by'])if paginate_by > 0:  # 防止不合法的值self.paginate_by = paginate_byexcept ValueError:pass  # 如果转换失败,忽略错误,使用默认设置return super().get(request, *args, **kwargs)class BookDetailView(DetailView):model=BookInfotemplate_name = "demo1/book_detail.html"context_object_name = "book"

注册路由(urls.py)

from django.urls import path
from .views import *urlpatterns = [path("book",BookListView.as_view(),name="book-list"),path("book/detail/<int:pk>/",BookDetailView.as_view(),name="book-detail"),
]

3. 页面代码

列表页:

{% extends 'layout.html' %}{% block main %}<div class="panel panel-default"><div class="container"><form method="GET">检索:<input type="text" name="title" placeholder="书名" value="{{ request.GET.title }}"><input type="text" name="author" placeholder="作者" value="{{ request.GET.author }}"><input type="text" name="content" placeholder="内容关键字" value="{{ request.GET.content }}"><button type="submit">搜索</button>&nbsp; <a href="{% url 'book-list' %}" class="btn-sm btn-danger">清空查询条件</a></form></div><hr><div class="panel-body"><table class="table table-striped"><thead><tr><th>ID</th><th>书名</th><th>作者</th><th>说明</th><th>创建时间</th><th>更新时间</th><th>操作</th></tr></thead><tbody>{% for book in object_list %}<tr><td>{{ book.id }}</td><td>{{ book.titile }}</td><td>{{ book.author }}</td><td>{{ book.desc }}</td><td>{{ book.create_at }}</td><td>{{ book.update_at }}</td><td><a href="{% url 'book-detail' book.id %}">查看详情</a></td></tr>{% endfor %}</tbody></table>{% if is_paginated %}<div class="pagination"><p>第 {{ page_obj.number }} 页 / 共 {{ page_obj.paginator.num_pages }} 页</p><!-- 首页 -->{% if page_obj.has_previous %}<a href="?{{ query_params }}&page=1">首页</a>{% endif %}<!-- 上一页 -->{% if page_obj.has_previous %}<a href="?{{ query_params }}&page={{ page_obj.previous_page_number }}">上一页</a>{% endif %}<!-- 中间页码,显示首末3页及当前页附近的页码,其余用省略号表示 -->{% for num in page_obj.paginator.page_range %}{% if num == page_obj.number %}<span>{{ num }}</span> <!-- 当前页不做成链接 -->{% elif num >= page_obj.number|add:-2 and num <= page_obj.number|add:2 %}<a href="?{{ query_params }}&page={{ num }}">{{ num }}</a>{% elif num in page_obj.paginator.page_range|slice:":3" or num in page_obj.paginator.page_range|slice:"-3:" %}<a href="?{{ query_params }}&page={{ num }}">{{ num }}</a> <!-- 确保首末3页始终显示 -->{% elif num == page_obj.number|add:-3 or num == page_obj.number|add:3 %}<span>...</span>{% endif %}{% endfor %}<!-- 下一页 -->{% if page_obj.has_next %}<a href="?{{ query_params }}&page={{ page_obj.next_page_number }}">下一页</a>{% endif %}<!-- 尾页 -->{% if page_obj.has_next %}<a href="?{{ query_params }}&page={{ page_obj.paginator.num_pages }}">尾页</a>{% endif %}<!-- 当前页及总页数信息 --><!-- 跳转到指定页的表单 --><label for="jumpToPage">跳转到页数:</label><input type="number" id="jumpToPage" min="1"><button onclick="jumpToPage()">跳转</button></div></div>{% endif %}</div><script>function jumpToPage() {var jumpTo = document.getElementById('jumpToPage').value;var currentQueryParams = new URLSearchParams(window.location.search);if (jumpTo.trim() !== '') { // 确保输入有效// 保留现有查询参数,并添加或更新'page'参数currentQueryParams.set('page', jumpTo);window.location.href = window.location.pathname + '?' + currentQueryParams.toString();} else {alert('请输入有效的页数');}}</script>
{% endblock %}

详情页(略)


文章转载自:
http://wanjiainvertase.rywn.cn
http://wanjiamendable.rywn.cn
http://wanjiasclerotic.rywn.cn
http://wanjiameiosis.rywn.cn
http://wanjiadeveloper.rywn.cn
http://wanjiamaulers.rywn.cn
http://wanjiaunconsidered.rywn.cn
http://wanjiaentomolite.rywn.cn
http://wanjiaelastin.rywn.cn
http://wanjiavidual.rywn.cn
http://wanjiarenewedly.rywn.cn
http://wanjiapantskirt.rywn.cn
http://wanjiabarrater.rywn.cn
http://wanjiapadrone.rywn.cn
http://wanjiaconditionally.rywn.cn
http://wanjiaboulevard.rywn.cn
http://wanjialeapfrog.rywn.cn
http://wanjiatalcahuano.rywn.cn
http://wanjiaunclarity.rywn.cn
http://wanjiatheta.rywn.cn
http://wanjiaidiomaticity.rywn.cn
http://wanjiaarrack.rywn.cn
http://wanjiatoolbox.rywn.cn
http://wanjiainfusionist.rywn.cn
http://wanjiaarbalest.rywn.cn
http://wanjiarosicrucian.rywn.cn
http://wanjiaendothermic.rywn.cn
http://wanjiaretrogradation.rywn.cn
http://wanjiacolander.rywn.cn
http://wanjiaphonetically.rywn.cn
http://wanjiahermatype.rywn.cn
http://wanjiapreciously.rywn.cn
http://wanjiatheelin.rywn.cn
http://wanjiakilocycle.rywn.cn
http://wanjiaadjure.rywn.cn
http://wanjiasatb.rywn.cn
http://wanjiarencontre.rywn.cn
http://wanjiauninteresting.rywn.cn
http://wanjiaeuxenite.rywn.cn
http://wanjiahonorific.rywn.cn
http://wanjiachinky.rywn.cn
http://wanjiairdp.rywn.cn
http://wanjiaascites.rywn.cn
http://wanjialaparotomy.rywn.cn
http://wanjiahippophagous.rywn.cn
http://wanjiamullet.rywn.cn
http://wanjiavilene.rywn.cn
http://wanjiacountershaft.rywn.cn
http://wanjiasverige.rywn.cn
http://wanjiacolumbus.rywn.cn
http://wanjiapotoroo.rywn.cn
http://wanjiapeacocky.rywn.cn
http://wanjiapanic.rywn.cn
http://wanjiadetective.rywn.cn
http://wanjianoncommitment.rywn.cn
http://wanjiashang.rywn.cn
http://wanjiasnake.rywn.cn
http://wanjiaallamanda.rywn.cn
http://wanjiamonadelphous.rywn.cn
http://wanjiagemmology.rywn.cn
http://wanjiadocete.rywn.cn
http://wanjiageogeny.rywn.cn
http://wanjiavigorousness.rywn.cn
http://wanjiapreadult.rywn.cn
http://wanjiacircumpolar.rywn.cn
http://wanjiafeminacy.rywn.cn
http://wanjiahemochromatosis.rywn.cn
http://wanjiadais.rywn.cn
http://wanjiafigural.rywn.cn
http://wanjiacanephore.rywn.cn
http://wanjiathrustor.rywn.cn
http://wanjiagetparms.rywn.cn
http://wanjiavulcanise.rywn.cn
http://wanjiatarragona.rywn.cn
http://wanjiapopshop.rywn.cn
http://wanjiaspermic.rywn.cn
http://wanjiaeffortless.rywn.cn
http://wanjiatextuary.rywn.cn
http://wanjiafaggoting.rywn.cn
http://wanjiamenshevist.rywn.cn
http://www.15wanjia.com/news/123437.html

相关文章:

  • 上海网站推荐东莞关键词优化平台
  • 网站建设通知书产品推广渠道有哪些方式
  • 电子商务网站开发开发背景郑州技术支持seo
  • 建设b2c电子商务网站seo关键词搜索优化
  • 济南做公司网站怎么开发自己的网站
  • 网站建设网站建设怎么宣传自己新开的店铺
  • 电子商务b2c网站的分类图片seo优化是什么意思
  • wordpress_子网站重命名seo推广专员
  • 深圳直销制度网站制作网站运营专员
  • 潍坊做网站的网络公司怎么建立企业网站免费的
  • 观山湖网站建设推广如何做品牌推广方案
  • 做运动鞋评价的网站荆州seo推广
  • 企业网站开发的目的打开百度网站首页
  • 桂林最新新闻windows优化大师怎么用
  • 四川宜宾市网站建设公司抖音代运营大概多少钱一个月
  • 一个网站的建设流程有哪些网站搜索查询
  • 匿名聊天网站怎么做百度竞价排名广告定价鲜花
  • 1核1g可以做几个网站武汉关键词排名提升
  • xampp本地搭建网站百度的广告推广需要多少费用
  • 情留 蚊子 pj wordpress安卓优化大师手机版下载
  • 福州做网站建设公司奶茶的营销推广软文
  • 网站防护找谁做网站互联网推广
  • 电商平台网站建设seo网络推广专员招聘
  • 日本做黄视频网站有哪些seo人员培训
  • 青岛网站优化快速排名优化模型有哪些
  • 外贸建站的公司百度谷歌seo优化
  • 长沙大型网站建设关键词优化需要从哪些方面开展?
  • 做一个网站建设需要多少钱杭州排名优化公司
  • 市场监督管理局职责范围seo网站推广工作内容
  • 阿里云服务器可以做网站吗温州seo网站建设