Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django分页:编辑后重定向到特定页面(FBV)_Django_Django Views - Fatal编程技术网

Django分页:编辑后重定向到特定页面(FBV)

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')

我在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')
    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参数的页面仍然无法识别:(