首页
学习
活动
专区
工具
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/)了解更多关于这些产品的详细信息。

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

相关·内容

没有搜到相关的合辑

领券