首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在同一页上提交表单时保留django分页和搜索过滤器

在同一页上提交表单时保留Django分页和搜索过滤器,可以通过以下步骤实现:

  1. 在Django视图函数中,首先获取分页和搜索过滤器的参数。分页参数通常包括当前页码和每页显示的数量,可以通过request.GET.get()方法获取。搜索过滤器的参数可以通过request.GET.get()方法获取。
  2. 在处理表单提交的逻辑之前,将获取到的分页和搜索过滤器的参数保存到context中,以便在渲染模板时使用。
  3. 处理表单提交的逻辑,包括验证表单数据、保存数据等操作。
  4. 在处理完表单提交逻辑后,重新构建包含分页和搜索过滤器参数的URL,并将其作为重定向的目标URL。
  5. 在模板中,使用Django的内置模板标签和过滤器来渲染分页和搜索过滤器。对于分页,可以使用Paginator类和Page对象来实现分页功能。对于搜索过滤器,可以使用if语句和for循环来根据搜索条件过滤数据。

下面是一个示例代码:

代码语言:txt
复制
from django.core.paginator import Paginator
from django.shortcuts import render, redirect

def my_view(request):
    # 获取分页和搜索过滤器的参数
    page_number = request.GET.get('page')
    page_size = request.GET.get('page_size')
    search_filter = request.GET.get('search_filter')

    # 将参数保存到context中
    context = {
        'page_number': page_number,
        'page_size': page_size,
        'search_filter': search_filter
    }

    # 处理表单提交逻辑
    if request.method == 'POST':
        # 表单验证和数据保存操作
        # ...

        # 重新构建URL,并将其作为重定向的目标URL
        redirect_url = f'/my_view/?page={page_number}&page_size={page_size}&search_filter={search_filter}'
        return redirect(redirect_url)

    # 获取数据并进行分页和搜索过滤
    data = MyModel.objects.all()
    if search_filter:
        data = data.filter(name__icontains=search_filter)
    paginator = Paginator(data, page_size)
    page = paginator.get_page(page_number)

    # 将分页和搜索过滤器的结果保存到context中
    context['data'] = page

    return render(request, 'my_template.html', context)

在模板中,可以使用Django的内置模板标签和过滤器来渲染分页和搜索过滤器的结果。例如:

代码语言:txt
复制
<!-- 分页渲染 -->
{% for item in data %}
    <!-- 显示数据 -->
{% endfor %}

<!-- 分页导航 -->
{% if data.has_previous %}
    <a href="?page={{ data.previous_page_number }}&page_size={{ page_size }}&search_filter={{ search_filter }}">上一页</a>
{% endif %}

{% for num in data.paginator.page_range %}
    {% if num == data.number %}
        <span>{{ num }}</span>
    {% else %}
        <a href="?page={{ num }}&page_size={{ page_size }}&search_filter={{ search_filter }}">{{ num }}</a>
    {% endif %}
{% endfor %}

{% if data.has_next %}
    <a href="?page={{ data.next_page_number }}&page_size={{ page_size }}&search_filter={{ search_filter }}">下一页</a>
{% endif %}

<!-- 搜索过滤器渲染 -->
<form method="get" action="">
    <input type="text" name="search_filter" value="{{ search_filter }}">
    <button type="submit">搜索</button>
</form>

这样,当在同一页上提交表单时,分页和搜索过滤器的参数会被保留,并且页面会重新加载显示相应的数据和分页导航。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

零基础使用Django2.0.1打造在线教育网站(一):项目介绍

点击导航栏: 你可以看到公开课,授课讲师,授课机构全局搜索。 点击公开课:你可以看到课程列表,排序-搜索。热门课程推荐课程的分页。...点击课程:你可以课程详情中对课程进行收藏取消收藏。同时可以采用富文本对课程内容进行展示。 点击开始学习:你可以看到课程的章节信息评论信息以及课程资源的下载链接。...点击授课讲师:你可以看到授课讲师的列表,可以对讲师进行人气排序以及分页,右侧还有讲师排行榜。 点击讲师的详情页面:你可以对讲师进行收藏分享,以及看到该讲师的全部课程。...点击导航栏: 你可以看到授课机构,它有分页,排序筛选功能。 机构列表右侧有快速提交我要学习的表单,之后你便可以开始学习了。...课程列表可以对不同字段进行排序。你可以选择多条记录进行删除操作。 课程列表:点击过滤器,选择字段范围开始搜索,结果可以导出csv,xml,json等格式文本。

1.7K50

Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表过滤

modelserializer实现商品序列化 3.GenericView方式实现商品列表分页 4.viewsetsrouter实现商品列表 5.各种View的分析 三、DRF的使用 1.DRF的...RequestResponse类 2.DRF过滤器 过滤的使用 搜索的使用 排序的使用 胸怀是非常重要的,一个人有眼光没胸怀是很倒霉的。...3.GenericView方式实现商品列表分页 现在进一步使用mixinsGenericView让代码更加简洁。...显然,此时已经实现分页的效果,并且比之前现实的信息更多,包括了总数、当前、下一等信息,并且图片地址也添加了域名、成为可访问的完整路径。...GenericAPIView继承自APIView,APIView的基础实现过滤、分页等功能; GenericAPIView结合mixins形成各种APIView,如CreateAPIView、ListAPIView

5.3K20

django写接口(实战篇)

:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django写接口(入门篇)》 《用django写接口(优化篇)》 正文 一部分我们通过基本类重构了...1.设置全局分页参数 我们可以 project 下的 settings.py 文件中加入 REST_FRAMEWORK 字典,设置全局的分页参数 REST_FRAMEWORK = { # 配置全局分页类型每页数量...接口分页效果 我们可以看到接口返回的信息还包含了前一后一的 url 是不是很人性化 接口数据多条件筛选 目前我们的接口要查找特定的信息只能通过 id 来查找,这肯定是不够完善的,这部分将设置接口的多条件查询...注册完以后,我们 REST_FRAMEWORK 字典中将过滤器添加进去 REST_FRAMEWORK = { # 配置全局分页类型每页数量 'DEFAULT_PAGINATION_CLASS...首先我们要先创建一个 filters.py 文件,用来定义过滤器 filter import django_filters # 自定义过滤器需要继承 django_filters.rest_framework.FilterSet

2K20

Vue+Django2.0 REST framework 打造前后端分离的生鲜电商项目(五)商品列表

一、Django2.0的view实现商品列表 算是对以前django知识的一个回顾,方便跟下面的drf(Django REST framework)实现商品列表作对比 1.apps/goods下新建...小贴士: 访问,如果没有xadmin后台退出账号,有可能会报错: Django rest framework __str__ returned non-string (type NoneType)...2.自定义过滤器 settings.py中注册django_filter,末尾配置过滤 1 INSTALLED_APPS = [ 2 ..... 3 'django_filters...小结 我们通过viewsets一个类,完成了商品列表分页,过滤,搜索,排序。...class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet): """ 商品列表分页,过滤,搜索,排序

4.8K61

37.Django1.11.6文档

另一个方面,GET 适合网页搜索这样的表单,因为这种表示一个GET 请求的URL 可以很容易地作为书签、分享重新提交Django表单中的角色 处理表单是一件很复杂的事情。...如果模型的相应字段有选择集,则提供给表单的选项必须是这些选择的有效子集,否则,保存模型本身之前验证模型本身表单提交将失败并显示ValidationError 。...分页 Django提供了一些类来帮助你管理分页的数据 — 也就是说,数据被分在不同页面中,并带有“/下一”链接。 这些类位于django/core/paginator.py中。...如果不存在,抛出InvalidPage异常。 Page.start_index()[source] 返回当前的第一个对象,相对于分页列表的所有对象的序号,从1开始。 ...Page.end_index()[source] 返回当前的最后一个对象,相对于分页列表的所有对象的序号,从1开始。

24.2K80

第 14 篇:交流的桥梁“评论功能”—— HelloDjango 系列教程

此外, 博客从“裸奔”到“有皮肤”[3] 中提过,所有模型的字段都接受一个 verbose_name 参数(大部分是第一个位置参数),django 根据模型的定义自动生成表单,会使用这个参数的值作为表单字段的...当用户想要发表评论,他找到我们给他展示的一个评论表单(我们已经看到文章详情的底部就有一个评论表单,你将看到表单呈现给我们的样子),然后根据表单的要求填写相应的数据。...action 指定表单内容提交的地址,这里我们提交给 comments:comment 视图函数对应的 URL(后面会创建这个视图函数并绑定对应的 URL),模板标签 url 的用法 分类、归档标签...method 指定提交表单的 HTTP 请求类型,一般表单提交都是使用 POST。...以上是对 CSRF 攻击防护措施的一个简单介绍,更加详细的讲解请使用搜索引擎搜索相关资料。

1.6K20

django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分

探索管理功能 现在我们已经注册了 Poll ,那 Django 就知道了要在管理网站的首页显示出来: 点击 “Polls” 。现在你 polls 的 “更改列表” 。...你将看到一列出了通过 Django 管理界面对此对象所做的全部更改的清单的页面, 包含有时间戳修改人的姓名等信息: 自定义管理表单 花些时间感叹一下吧,你没写什么代码就拥有了这一切。...这样的话你就需要在注册对象 告诉 Django 对应的配置。 让我们来看看如何在编辑表单给字段重新排序。...让我们来加上搜索功能:: search_fields = ['question'] chang list 的顶部增加了一个搜索框。...Change-list 分页搜索框,筛选,日期分层列标题排序如你所原地在一起运行了。

2.5K40

关于“Python”的核心知识点整理大全55

自己的项目中编 写这样的查询,先在Django shell中进行尝试大有裨益。相比于编写视图模板,再在 浏览器中检查结果,shell中执行代码可更快地获得反馈。 3....Django模板中,竖线(|)表示模板过滤器——对模板变量的值 进行修改的函数。过滤器date: 'M d, Y H:i'以这样的格式显示时间戳:January 1, 2015 23:00。...对于只是从服务 器读取数据的页面,使用GET请求;在用户需要通过表单提交信息,通常使用POST请求。处理 所有表单,我们都将指定使用POST方法。...用户初次请求该网页,其浏览器将发送GET请求; 用户填写并提交表单,其浏览器将发送POST请求。...由于实例化TopicForm我们没有指定任何实参,Django将创建一个可供用户 填写的空表单。 如果请求方法为POST,将执行else代码块,对提交表单数据进行处理。

12310

Django】 开发:补充知识

True has_previous ():如果有返回 True has_other_pages ():如果有或下一返回 True next_page_number ():返回下一的页码...,如果下一不存在,抛出 InvalidPage 异常 previous_page_number ():返回的页码,如果不存在,抛出 InvalidPage 异常 len ():返回当前页面对象的个数...文件上传 文件上传必须为 POST 提交方式 表单 中文件上传必须有带有 才会包含文件内容数据。 表单中用 标签上传文件 名字 xxx 对应 对应的内存缓冲文件流对象。...部署要分以下几个步骤进行 安装机器安装配置同版本的环境 django 项目迁移 $ sudo scp 当前项目源代码 远程主机地址和文件夹 sudo scp /home/tarena/django...项目的程序已变成后台守护进程,关闭当前终端此进程也不会停止。

6.4K30

浅谈Python Django框架

4) forms.py:表单,用户浏览器输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。...4、Django基本命令 1) 新建一个项目: django-admin.py startproject project-name windows 如果报错,尝试用 django-admin...ip的8000端口,访问用电脑的ip代替 127.0.0.1(8000为端口号,如果不说明,则端口号默认为8000);后者本电脑访问服务器,访问ip为127.0.0.1。.... {% endfor %} ③ ifequal/ifnotequal 标签 {% ifequal %} 标签比较两个值,当他们相等,显示 {% ifequal %} {% endifequal...⑤ 过滤器 模板过滤器可以变量被显示前修改它,过滤器使用管道字符: {{ name|lower }}大写转换为小写。

2.4K20

Solr查询处理简介

查询表单不是为最终用户设计的,而是solr为开发者管理员提供的一个查询提交途径。使用solr应用程序,需要为用户开发搜索界面。...分析:以上的查询中power的重要性是iPod的两倍,所以排序发生了变化。 四、分页排序 分页 使用分页可以返回搜索结果的小部分子集,同时使用导航工具来请求更多页面。...Slor中默认的页面大小为10,可以查询请求中通过行参数来调整页面大小。要在搜索结果中请求下一,只需页面大小中增量调整start参数。...排序 搜索的结果默认根据相关度得分将文档按降序(从高到低)排列。Solr还可以根据文档中的其他字段来进行排序。 排序分页结合起来使用是因为排序决定了搜索结果在页面中的位置。...五、拓展的搜索功能 查询表单包含复选框列表,可以查询处理中实现高级功能。

1.5K20

浅谈Python Django框架

4) forms.py:表单,用户浏览器输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。...4、Django基本命令 1) 新建一个项目: django-admin.py startproject project-name    windows 如果报错,尝试用 django-admin ...ip的8000端口,访问用电脑的ip代替 127.0.0.1(8000为端口号,如果不说明,则端口号默认为8000);后者本电脑访问服务器,访问ip为127.0.0.1。....   {% endfor %}   ③ ifequal/ifnotequal 标签 {% ifequal %} 标签比较两个值,当他们相等,显示 {% ifequal %} {% endifequal...⑤ 过滤器 模板过滤器可以变量被显示前修改它,过滤器使用管道字符: {{ name|lower }}大写转换为小写。

2.2K20

Python全栈开发之Django基础

如果在一台机器,想开发不同的项目,这些项目依赖的同一个包的版本不同,其他项目就无法正常运行了,所有我们要用到虚拟环境,虚拟环境就是对真实Python环境的复制,通过建立多个虚拟环境,不同的虚拟环境中开发项目就实现了项目之间的间隔...才会访问数据库 缓存 使用同一个结果集,第一次使用会触发查询数据库,然后将结果缓存下载,再次使用直接调用缓存 限制结果集 可以对结果集进行切片操作,等同于数据库中的分页操作,但是不支持负数 list...语法:变量|过滤器:参数 data|default:'默认值' 更多内建过滤器 自定义过滤器 应用中创建templatetags目录 该目录下创建filters.py文件 #导入Library类...,还会在表单中加入一个隐藏域,里面存放有一个value值,然后提交数据的时候,会将这两个值提交到服务器进行校验,如果value值cookie值相同,正常执行业务逻辑,否则,返回403错误 验证码 新用户注册...No.6 后台 内容发布的部分由网站的管理员负责查看、添加、修改、删除数据,开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块 选项 大小

3.7K20
领券