Django分页:编辑后重定向到特定页面(FBV)
我在Django中使用分页列出了300条客户记录。每页包含20条记录。假设我在第7页选择了一条记录进行编辑。编辑记录后,成功将url重定向到列表视图(这是第一页)。所以我想,如果我在Django分页:编辑后重定向到特定页面(FBV),django,django-views,Django,Django Views,我在Django中使用分页列出了300条客户记录。每页包含20条记录。假设我在第7页选择了一条记录进行编辑。编辑记录后,成功将url重定向到列表视图(这是第一页)。所以我想,如果我在?page=7中编辑,当客户id完成编辑时,它将返回到?page=7 这里是我在view.py中查看的客户列表: def customer_list(request): posts_list = Customer.objects.all() query = request.GET.get('q')
?page=7
中编辑,当客户id
完成编辑时,它将返回到?page=7
这里是我在view.py中查看的客户列表
:
def customer_list(request):
posts_list = Customer.objects.all()
query = request.GET.get('q')
if query:
posts_list = Customer.objects.filter(
Q(invoice__addresses__contact_number__icontains=query) |
Q(invoice__addresses__address__icontains=query) |
Q(shipping_method__icontains=query)
).distinct()
page = request.GET.get('page')
paginator = Paginator(posts_list, 20) # 20 posts per page
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context = {
'posts': posts,
'page': page
}
return render(request, "customers/customer_list.html", context)
def update_customer_list(request, id):
"""
Here, update single customer id form customer table
:param request:
:param id:
:return:
"""
obj = get_object_or_404(Customer, pk=id)
form = CustomerForm(request.POST or None, instance=obj)
if form.is_valid():
form.save()
messages.add_message(request, messages.SUCCESS, 'Customer successfully Updated')
return redirect('customer_list')
return render(request, 'customers/customerUpdateForm.html', {'form': form})
path('update_customer_list/<int:id>/', views.update_customer_list, name='update_customer_list'),
这里是更新客户列表查看查看.py
:
def customer_list(request):
posts_list = Customer.objects.all()
query = request.GET.get('q')
if query:
posts_list = Customer.objects.filter(
Q(invoice__addresses__contact_number__icontains=query) |
Q(invoice__addresses__address__icontains=query) |
Q(shipping_method__icontains=query)
).distinct()
page = request.GET.get('page')
paginator = Paginator(posts_list, 20) # 20 posts per page
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context = {
'posts': posts,
'page': page
}
return render(request, "customers/customer_list.html", context)
def update_customer_list(request, id):
"""
Here, update single customer id form customer table
:param request:
:param id:
:return:
"""
obj = get_object_or_404(Customer, pk=id)
form = CustomerForm(request.POST or None, instance=obj)
if form.is_valid():
form.save()
messages.add_message(request, messages.SUCCESS, 'Customer successfully Updated')
return redirect('customer_list')
return render(request, 'customers/customerUpdateForm.html', {'form': form})
path('update_customer_list/<int:id>/', views.update_customer_list, name='update_customer_list'),
这里是url.py中的update\u customer\u list
url:
def customer_list(request):
posts_list = Customer.objects.all()
query = request.GET.get('q')
if query:
posts_list = Customer.objects.filter(
Q(invoice__addresses__contact_number__icontains=query) |
Q(invoice__addresses__address__icontains=query) |
Q(shipping_method__icontains=query)
).distinct()
page = request.GET.get('page')
paginator = Paginator(posts_list, 20) # 20 posts per page
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context = {
'posts': posts,
'page': page
}
return render(request, "customers/customer_list.html", context)
def update_customer_list(request, id):
"""
Here, update single customer id form customer table
:param request:
:param id:
:return:
"""
obj = get_object_or_404(Customer, pk=id)
form = CustomerForm(request.POST or None, instance=obj)
if form.is_valid():
form.save()
messages.add_message(request, messages.SUCCESS, 'Customer successfully Updated')
return redirect('customer_list')
return render(request, 'customers/customerUpdateForm.html', {'form': form})
path('update_customer_list/<int:id>/', views.update_customer_list, name='update_customer_list'),
path('update_customer_list/',views.update_customer_list,name='update_customer_list'),
我正在等待他人的帮助,我们将非常感谢您的帮助…您将页面参数传递到url,并在您拥有的内部函数中:
from django.shortcuts import reverse_lazy
def update_customer_list(request, id):
"""
Here, update single customer id form customer table
:param request:
:param id:
:return:
"""
page = request.GET.get("page")
obj = get_object_or_404(Customer, pk=id)
form = CustomerForm(request.POST or None, instance=obj)
if form.is_valid():
form.save()
messages.add_message(request, messages.SUCCESS, 'Customer successfully Updated')
url = reverse_lazy("customer_list") + "?page=" + page
return redirect(url)
return render(request, 'customers/customerUpdateForm.html', {'form': form})
将页面参数传递到编辑视图,然后重定向到带有查询参数的页面列表parameter@DimitrisKougioumtzis谢谢你的答复。。我明白你的意思。。你能举例说明如何实现它吗。。??事实上,我是先想到的(根据你的ans),但对实现感到困惑..我试过。。但是page=request.GET.GET(“page”)
给出None
。。您能告诉我为什么吗?您必须将页面参数传递给编辑视图的链接,因为请求获取参数我的浏览器中的编辑页面url是:http://localhost:8000/update_customer_list/18/
作为get参数的页面仍然无法识别:(