Django, как передать идентификатор пагинации и идентификатор модели? - PullRequest
0 голосов
/ 27 сентября 2018

Спасибо, у меня проблема. Я использую нумерацию страниц в URL, передавая идентификатор страницы, и хочу также передать свой идентификатор драйвера модели.если страница имеет значение 1, URL-адрес

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

, но после перехода пользователя на следующую страницу URL-адрес:

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

, но на самом деле я хочу указать ссылку на идентификатор драйвера вURL, который я пытаюсь передать.

Что я пытаюсь сделать, это получить идентификатор драйвера и страницу # в моем URL.как мне это сделать?и как я могу изменить свои взгляды и достичь его, в то время как он работает через нумерацию страниц

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 голосов
/ 27 сентября 2018

идентификатор вашего драйвера не должен указываться в urlpath , вы можете передавать данные в параметрах url ,, например:

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

получить форму driver_id request, например:

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

lastВы можете рефакторировать представление с помощью 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)

URL вашего запроса

127.0.0.1/rentacar/list/1?driver=2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...