2013-04-27 3 views
0

장고 페이지 매김 논리의 원리를 이해하려고합니다.django 페이지 매김 이해 문제

내 이해 문제 :
검색 결과 페이지에 40 개 항목이 있습니다. 페이지나 (pagifier)를 사용하고 페이지 당 10 개의 항목 만 표시하려고합니다.
이제 누군가 내 검색에서 "car BMW"를 검색했습니다. 그 다음 그는 10 대의 차로 첫번째 페이지에 도착한다.

제 질문은 "car BMW"라는 검색어를 요청할 것인지 여부입니다.
페이지를 페이징하는보기에 대해 잘 모르겠습니다. 때문에 페이징의

  1. 일반 검색
  2. 다시 검색 :

    내가이보기 기능을 가지고해야합니까?

누군가이 논리를 이해하도록 도와 줄 수 있습니까? 나는 문서를 읽었지만 거기에 언급되어 있지 않거나 그것을 이해하기에는 너무 바보입니다.

답변

1

페이지 네이션은 쿼리 세트와 관련이 있으며 단지 쿼리 세트를 가져 와서 특정 페이지에서 예상되는 항목 수를 반환합니다. 예 : 귀하의 경우 특정 페이지에 대해 10 개의 항목 만 적용됩니다.

귀하의 요청을 수정하지 않습니다.

단일보기로 처리 할 수 ​​있습니다.

예 : 당신은뿐만 아니라 요청에서 사용할 수 page을 기대한다면

def get_cars(self, request, page=1): 
    cars_per_page = 10 
    search_term = request.REQUEST.get('car_type') #car_type 'car bmw' will still be kept in request 
    all_cars = Car.objects.filter(car_type__contains=search_term) 
    paginator = Paginator(all_cars, cars_per_page) 
    page_ = paginator.page(page) 
    result_cars = page_.object_list 
    return render(request, "search_cars.html", {'search_term': search_term}) 

, 당신은 할 수 있습니다 :

def get_cars(self, request): 
    page = request.GET.get('page') 
    ... 
    #Everything else described above. 
    ... 
+0

감사합니다. 그러나 페이지가 고정적으로 1로 설정되어 있습니다. – doniyor

+0

죄송합니다, 무엇을 의미하는지 확실하지 않습니다. 조금 더 자세히 설명해 주시겠습니까? –

+0

당신은 이렇게했습니다 :''def get_cars (self, request, page = 1)''. 그러나''GET'' 요청으로부터''page''를 얻어야합니다. – doniyor

3

보통, 검색 요청은 다음과 같습니다

example.com/search/?q=car+bmw 

페이지 네이션은 쿼리를 사용하여 (car + bmw로 객체를 필터링) 제한을 적용합니다. 누군가가 두 번째 페이지에서 클릭 할 때 첫 페이지가 될 것입니다 (0, 10) 는 요청은 다음과 같습니다 (10, 20)

:

example.com/search/?q=car+bmw&page=2 

매김이 같은 쿼리를 사용하지만 다른 오프셋과

페이지 매김에 원하는 쿼리를 제공하기 만하면됩니다. 페이지 매김은 나머지 작업을 처리합니다.

django example에서 contact_list 검색어를 수정해야합니다.