我正在使用Django引导程序模式形式,当我从分页页面更新某些记录时,它会重定向到列表视图的第一页。我想将其重定向到所选/更新记录的分页。
My list view with update in the left corner and pop up modal form to update it
单击“保存”后,它将重定向到没有分页参数的记录列表,如何在成功URL中添加分页参数。请帮助
我的views.py
def record_list(request):
queryset_list = Record.objects.filter(recorded__lte=timezone.now()).order_by('-recorded')
query = request.GET.get("q")
if query:
for term in query.split():
queryset_list = Record.objects.filter(Q(persons__last_name__icontains=term) |
Q(persons__first_name__icontains=term) |
Q(persons__middle_name__icontains=term) |
Q(title__icontains=term)
)
paginator = Paginator(queryset_list.order_by('-recorded'), 10)
page_request_var = "page"
page = request.GET.get('page', 1)
try:
queryset = paginator.page(page)
except PageNotAnInteger:
queryset = paginator.page(1)
except EmptyPage:
queryset = paginator.page(paginator.num_pages)
context = {
"record_list": queryset,
"page_request_var": page_request_var,
"title": "List",
}
return render(request, 'Bato_Cabugao/Record/record_list.html', context)
class RecordUpdateView(LoginRequiredMixin,generic.UpdateView):
template_name = 'Bato_Cabugao/Record/record_update.html'
model = Record
form_class = RecordForm
Models.py
class Record(models.Model):
title = models.CharField(max_length=200)
persons = models.ManyToManyField(Person)
details = models.TextField()
recorded = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('Bato_Cabugao:list_record')
record_list.html-分页
{% if record_list.has_other_pages %}
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
{% if record_list.has_previous %}
<li class="page-item"><a class="page-link" href="?{{ page_request_var }}={{ record_list.previous_page_number }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">«</a>
</li>
{% else %}
<li class="disabled page-item"><span class="page-link">«</span></li>
{% endif %}
{% if record_list.number|add:'-4' > 1 %}
<li class="page-item"><a class="page-link" href="?page={{ record_list.number|add:' -5' }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">…</a>
</li>
{% endif %}
{% for i in record_list.paginator.page_range %}
{% if record_list.number == i %}
<li class="page-item page-link"><span>{{ i }} <span
class="sr-only">(current)</span></span></li>
{% elif i > record_list.number|add:'-5' and i < record_list.number|add:'5' %}
<li class="page-item"><a class="page-link" href="?{{ page_request_var }}={{ i }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if record_list.paginator.num_pages > record_list.number|add:'4' %}
<li class="page-item">
<a class="page-link" href="?page={{ record_list.number|add:'5' }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">…</a>
</li>
{% endif %}
{% if record_list.has_next %}
<li class="page-item">
<a class="page-link"
href="?{{ page_request_var }}={{ record_list.next_page_number }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">»
</a>
</li>
{% else %}
<li class="page-item disabled"><span class="page-link">»</span></li>
{% endif %}
</ul>
</nav>
{% endif %}
答案 0 :(得分:0)
将current page number
和Record
数据一起发送到UpdateView
。然后在“视图”中定义get_success_url
方法,如下所示。
class RecordUpdateView(LoginRequiredMixin,generic.UpdateView):
...
def get_success_url(self):
current_page = self.request.POST.get('current_page')
return <url_to_record_list> + '?page=' + current_page
假设您在request.GET
或request.POST
中拥有当前页码,则可以构造并返回所需的最终URL。