Django如何传递分页ID和模型ID?

时间:2018-09-27 13:19:10

标签: django django-views django-urls

谢谢,我遇到了一个问题。我在通过页面ID的url中使用分页,并且还希望传递我的模型驱动程序ID。如果网页位于1,则网址为

         *url(r'^rentacar/list/$', extension_views.rentacar_list),*

但是在用户转到下一页后,URL为:

              *url(r'^rentacar/list/(\d+)/$', extension_views.rentacar_list),*

但是我实际上要做的是在我尝试传递的URL中引用驱动程序ID。

我想做的是在我的URL中获取驱动程序ID和页面号。我该怎么做?以及如何通过分页运行

Views.py

@csrf_protect
def rentacar_list(request, page_number=1):

    all_cars = Car.objects.all().order_by('-id')
    if menu_config.menu_item_rentacar_list_show_unavailable == 0:
        all_cars = all_cars.exclude(car_available=0)
    else:
        all_cars = all_cars

    cars_page = Paginator(all_cars, menu_config.menu_item_rentacar_list_pagination)
    args['cars'] = cars_page.page(page_number)
    template = Template.objects.get(template_default__exact=1)    
    template_page = template.template_alias + str("/rentacar/rentacar_cars_list.html")   
    return render(request, template_page, args)

Urls.py

url(r'^rentacar/list/$', extension_views.rentacar_list),
url(r'^rentacar/list/(\d+)/$', extension_views.rentacar_list),

但我想实现:

url(r'^rentacar/list/driver/id/$', extension_views.rentacar_list),
url(r'^rentacar/list/(\d+)/driver/id/$', extension_views.rentacar_list),

1 个答案:

答案 0 :(得分:1)

您的驱动程序ID不应该在urlpath中,您可以在url参数中传输数据,例如:

yourhost/rentacar/list/<page_id>?driver=<driver_id>

获取request形式的driver_id,例如:

driver_id = request.GET.get('driver', None)

最后,您可以通过具有内置分页功能的django ListView重构视图,这里是django ListView documnet django listview

示例

url.py

url(r'^rentacar/list/(\d+)/$', extension_views.rentacar_list),

views.py

def you_view(request, page_number):
    driver_id = request.GET.get('driver', None)

您的请求网址

127.0.0.1/rentacar/list/1?driver=2