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

Django:提交表单后,如何重定向到带有分页的ListView?

在Django中,要实现在提交表单后重定向到带有分页的ListView,可以按照以下步骤进行操作:

  1. 首先,在urls.py文件中定义一个URL模式,用于处理表单提交后的重定向。例如:
代码语言:txt
复制
from django.urls import path
from .views import MyListView, MyFormView

urlpatterns = [
    path('list/', MyListView.as_view(), name='my_list'),
    path('form/', MyFormView.as_view(), name='my_form'),
]
  1. 在views.py文件中,创建一个继承自ListView的视图类,用于显示带有分页的列表。例如:
代码语言:txt
复制
from django.views.generic import ListView
from .models import MyModel

class MyListView(ListView):
    model = MyModel
    paginate_by = 10
    template_name = 'my_list.html'
  1. 创建一个继承自FormView的视图类,用于处理表单提交。在该视图类中,重写form_valid()方法,以实现提交表单后的重定向。例如:
代码语言:txt
复制
from django.views.generic import FormView
from django.urls import reverse_lazy
from .forms import MyForm

class MyFormView(FormView):
    form_class = MyForm
    template_name = 'my_form.html'
    success_url = reverse_lazy('my_list')

    def form_valid(self, form):
        form.save()
        return super().form_valid(form)
  1. 在模板文件my_form.html中,编写表单的HTML代码。例如:
代码语言:txt
复制
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">提交</button>
</form>
  1. 在模板文件my_list.html中,编写显示列表的HTML代码。例如:
代码语言:txt
复制
{% for object in object_list %}
  <p>{{ object }}</p>
{% endfor %}

<div class="pagination">
  <span class="step-links">
    {% if page_obj.has_previous %}
      <a href="?page=1">&laquo; 第一页</a>
      <a href="?page={{ page_obj.previous_page_number }}">上一页</a>
    {% endif %}

    <span class="current-page">{{ page_obj.number }}</span>

    {% if page_obj.has_next %}
      <a href="?page={{ page_obj.next_page_number }}">下一页</a>
      <a href="?page={{ page_obj.paginator.num_pages }}">最后一页 &raquo;</a>
    {% endif %}
  </span>
</div>

通过以上步骤,当用户在表单页面提交表单后,会自动重定向到带有分页的列表页面,并显示提交的数据。同时,分页功能也会在列表页面中正常工作。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云数据库MySQL(TencentDB for MySQL)、腾讯云对象存储(COS)等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息。

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

相关·内容

Django -- 如何优雅的提交表单

前言 前面的内容我们基本上以 get请求作为例子,那 post请求Django是如何处理的呢?本章内容我们就来介绍Django如何发起和处理 post请求的。...,提交的这个表单会改变服务端的数据,所以我们将 method="post" ,并且我们将action 设置为 {%url'demo_app:add'%}, 这表明了了我们会像 demo_app/views...Django 为此提出了一种较为简便的方法Form ,Django 中的表单有一下两个作用: 渲染表单模板 验证数据是否合法 下面我们来介绍下他的使用。...,在 标签中,只有 {{form}}了,这就是 渲染表单模板 的作用 我们运行程序可以到同样的效果,大家也可以试试当输入的 name或 age不符合条件的情况系统会是什么反应。...我们一般推荐不用表单渲染,因为样式不受自己控制,另外当我们 is_valid()返回true 后,我们可以通过 cleaned_data属性中找到所有通过验证的表单数据,这个大家可以自己探索下。

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

    这意味着,当有人选择了一个单选按钮并提交了表单,将会发送 的 POST 数据是 choice=3。这是 HTML 表单中的基本概念。...使用 method=”post” ( 而不是 method=”get”) 是非常重要的,因为这种提交表单的方式会改变服务器端的数据。...HttpResponseRedirect 对象需要一个参数:用户将被重定向的 URL (请继续看下去在这情况下我们是如何构造 URL ) 。...想了解 HttpRequest 对象更多的内容,请参阅 request 和 response 文档 。 当有人投票后,vote() 视图会重定向到投票结果页。...每次投票后你将会看到结果页数据都有更新。 如果你没有选择投票选项就提交了,将会看到错误的信息。

    1.5K10

    Django 1.10中文文档-第一个应用Part4-表单和通用视图

    这意味着,当有人选择一个单选按钮并提交表单提交时,它将发送一个POST数据choice=#,其中# 为选择的Choice的ID。...这是HTML表单的基本概念; action表示你要发送的目的url,method表示提交数据的方式; forloop.counter表示for循环的次数; 由于我们发送了一个POST请求...Django为你提供了一个简单的方法来避免这个困扰,那就是在form表单内添加一条{% csrf_token %}标签,标签名不可更改,固定格式,位置任意,只要是在form表单内。...当对Question进行投票后,vote()视图将请求重定向到Question的结果界面。...应该看到一个投票结果页面,并且在每次投票后都会更新。 如果提交时没有选择任何Choice,应该会看到错误信息。 注: views()视图的代码确实有一个小问题。

    2.4K40

    Django内置的通用类视图CBV及示例

    显示表单的视图,验证错误时,重新显示表单并显示错误信息;成功时,重定向到一个新的URL....属性: form_class:要实例化的Form类. success_url:表单成功处理后重定向到的URL. tamplate_name:字符串表示的模板名称....方法: get_success_url():决定在表单成功验证后重定向到的URL,默认返回success_url. form_valid(form):在表单验证成功后调用该方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖该方法在以上行为之间添加额外的动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充的表单数据和错误信息重新渲染上下文...delete()方法,然后重定向到success_url.

    3.2K10

    Django内置的通用类视图及实例

    显示表单的视图,验证错误时,重新显示表单并显示错误信息;成功时,重定向到一个新的URL....属性: form_class:要实例化的Form类. success_url:表单成功处理后重定向到的URL. tamplate_name:字符串表示的模板名称....方法: get_success_url():决定在表单成功验证后重定向到的URL,默认返回success_url. form_valid(form):在表单验证成功后调用该方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖该方法在以上行为之间添加额外的动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充的表单数据和错误信息重新渲染上下文...delete()方法,然后重定向到success_url.

    2.9K40

    django 入门:通用视图类重构视图

    :视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图...P[0-9]+)/$', views.PostDetailView.as_view(), name='post'), ] 修改完后的界面应该和之前的效果是一样的 ? 列表界面 ?...详情界面 有时候如果我们的数据过多,同一页加载全部数据,用户的体验肯定不好,我们通过通用视图类来创建分页,这边为了方便显示,我们会设置每页加载一篇文章 3 通过 ListView 创建分页 1.指定...ListView 中的 paginate_by 属性来设置分页 class PostListView(ListView): model = Post template_name = 'blog...优化分页列表 最后我们列下 Paginator 常用属性结束 django 的入门教程,接下来会有 DRF 的入门教程,django 算是其基础吧,DRF 实现了前后端分离,刚好适合我这种 Android

    89120

    【Django】 开发:补充知识

    count:需要分类数据的对象总数 :分页后的页面总数 :从1开始的range对象, 用于记录当前面码数 每页数据的个数 Paginator方法 page(number) 参数...文件上传 文件上传必须为 POST 提交方式 表单 中文件上传时必须有带有 时才会包含文件内容数据。 表单中用 标签上传文件 名字 xxx 对应 对应的内存缓冲文件流对象。...中的用户认证 (使用Django认证系统) Django带有一个用户认证系统。...执行该命令后,Django 将项目重所有静态文件 复制到 中 ,包括 Django 内建的静态文件【如 admin 后台的样式】 Nginx 配置中添加新配置 # file : /etc/nginx.../sites-enabled/default # 新添加location /static 路由配置,重定向到指定的 第一步创建的路径即可 server { ...

    6.4K30

    Django源码学习-8-ListView&DetailView通用视图

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...Django的通用视图可以减少开发的单调性,它抽象出一些在视图开发中常用的代码和模式,这样就可以在无需编写大量代码的情况下,快速编写出常用的视图函数。 ?..., ) from django.views.generic.list import ListView __all__ = [ 'View', 'TemplateView', 'RedirectView...pass ① ListView:显示对象列表 用于展示一个 Model 里面的所有对象,也可以是其子集 (queryset) ,支持分页。...from django.views.generic import ListView from books.models import Publisher class PublisherList(ListView

    1.4K10

    带你认识 flask 分页

    请注意,在处理表单数据后,我通过发送重定向到主页来结束请求。我可以轻松地跳过重定向,并允许函数继续向下进入模板渲染部分,因为这已经是主页视图函数了。 那么,为什么重定向呢?...通过重定向来响应Web表单提交产生的POST请求是一种标准做法。这有助于缓解在Web浏览器中执行刷新命令的烦恼。当你点击刷新键时,所有的网页浏览器都会重新发出最后的请求。...如果带有表单提交的POST请求返回一个常规的响应,那么刷新将重新提交表单。因为这不是预期的行为,所以浏览器会要求用户确认重复的提交,但是大多数用户却很难理解浏览器询问的内容。...这个简单的技巧叫做Post/Redirect/Get模式。它避免了用户在提交网页表单后无意中刷新页面时插入重复的动态。 02 展示用户动态 应用看起来更完善了,但是在主页显示所有用户动态迟早会出问题。...在最终的应用中,每页显示的数据将会大于三,但是对于测试而言,使用小数字很方便。 接下来,我需要决定如何将页码并入到应用URL中。

    2.1K20

    Django学习笔记 1.4 表单和通用视图

    文章目录 前言 1 编写一个简单的表单 1.1 模版中新增表单 1.2 视图中新增交互处理 1.3 重定向的 results 页面增加显示 1.4 完善 results.html 页面代码 2 通用视图...2.1 改良 URLconf 2.2 改良视图 小结 前言 这一节我们将继续编写投票应用,专注于简单的表单处理并且精简我们的代码。...1 编写一个简单的表单 1.1 模版中新增表单 更新一下在上一个教程中编写的投票详细页面的模板 (“polls/detail.html”) ,增加一个 HTML 元素: {{ question.question_text...1.2 视图中新增交互处理 polls/views.py 中将投票选择存入数据库,同时做URL的重定向处理。...这些视图反映基本的 Web 开发中的一个常见情况:根据 URL 中的参数从数据库中获取数据、载入模板文件然后返回渲染后的模板。

    80110

    django 1.8 官方文档翻译:13-1-2 使用Django认证系统

    限制访问给登陆后的用户 原始的方法 限制页面访问的简单、原始的方法是检查request.user.is_authenticated()并重定向到一个登陆页面: from django.conf import...redirect_field_name: GET字段的名称,包含登陆后重定向URL。默认为next。 authentication_form: 用于认证的可调用对象(通常只是一个表单类)。...如果通过POST调用并带有用户提交的凭证,它会尝试登入该用户。如果登入成功,该视图重定向到next中指定的URL。...post_change_redirect: 密码修改成功后重定向的URL。 password_change_form: 一个自定义的“修改密码”表单,必须接受user 关键词参数。...如果你使用了自定义的用户模型,可能需要为验证系统定义你自己的表单。更多信息请见 使用带有自定义用户模型的内建验证表单的文档。

    4.7K20

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

    你制定了简要的项目规 范,在虚拟环境中安装了Django,创建了一个项目,并核实该项目已正确地创建。你学习了如何 创建应用程序,以及如何定义表示应用程序数据的模型。...你学习了数据库,以及在你修改模型后, Django可为你迁移数据库提供什么样的帮助。你学习了如何创建可访问管理网站的超级用户,并 使用管理网站输入了一些初始数据。...视图函数new_topic() 函数new_topic()需要处理两种情形:刚进入new_topic网页(在这种情况下,它应显示一个 空表单);对提交的表单数据进行处理,并将用户重定向到网页topics...form} return render(request, 'learning_logs/new_topic.html', context) 我们导入了HttpResponseRedirect类,用户提交主题后我们将使用这个类将用户重定向到网...我们使用reverse()获取页面topics的URL,并将其传递给HttpResponseRedirect()(见6),后者将用户的浏览器重定向到页 面topics。

    16610

    Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

    内置视图处理对象的定义 对于我们视图处理函数,从最原始的HttpResponse()来进行页面数据的输出,到render()函数进行模板页面的操作,已经是可以满足我们的需求了,但是Django赶脚还不够...常规情况下,对应页面中要展示数据列表的视图,通过继承Django的django.views.generic.ListView对象来实现,页面中要展示数据信息的视图,通过继承Django的django.views.generic.DetailView..."index.html" # 指定变量名称,保存查询到的数据 context_object_name = "question_list" # 列表页面,需要查询对应的数据集合...这个问题就对了,我们看看Django源代码 首先查看ListView class ListView(MultipleObjectTemplateResponseMixin, BaseListView):...我们可以从上述代码中看到,继承自ListView视图处理类的类型,已经在内部封装好了分页操作功能,这也是我们项目中经常用到的技术呢,非常棒吧,我们继承了这个视图处理对象,就可以在后续的项目中,通过重写它的属性和方法来快捷的完成数据展示的分页功能了

    90730

    Django 博客单元测试:测试评论应用

    提交的内容合法,则创建评论,用户被重定向回被评论文章的详情页,页面中包含评论成功的消息提醒。...请修改表单中的错误后重新提交。')...test_valid_comment_data 中,我们构造合法的评论内容并提交,预期结果是评论提交成功后重定向到被评论文章的详情页,所以使用了 assertRedirects 进行断言。...由于评论成功后需要重定向,因此传入 follow=True,表示跟踪重定向,因此返回的响应,是最终重定向之后返回的响应(即被评论文章的详情页),如果传入 False,则不会追踪重定向,返回的响应就是一个响应码为...基本套路就是代替 django 视图函数自动渲染模板内容的过程,手工构造一个包含待测试模板标签的模板,然后手工渲染其内容,断言渲染后的内容是否包含预期的内容。

    55330

    python 终极篇 --- django

    POST 请求可以带有空的 POST 字典 —— 如果通过 HTTP POST 方法发送一个表单,但是表单中没有任何的数据,QueryDict 对象依然会被创建。...注意,FILES 只有在请求的方法为POST 且提交的 带有enctype="multipart/form-data" 的情况下才会 包含数据。...参数可以是: 一个模型:将调用模型的get_absolute_url() 函数 一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称 一个绝对的或相对的URL,将原封不动的作为重定向的位置...return redirect('some-view-name', foo='bar') 传递要重定向到的一个具体的网址 def my_view(request): ......A页面临时重定向到B页面,那搜索引擎收录的就是A页面。 A页面永久重定向到B页面,那搜索引擎收录的就是B页面。 redirect 4.

    1.6K10
    领券