谢谢,我遇到了一个问题。我在通过页面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),
答案 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