2016-11-04 36 views
1

我正在使用Django Rest Framework,並試圖使用doc example從API視圖轉換爲TemplateHTMLResponse。我能夠完成它的大部分工作,並且已經加載了模板並傳遞了所有的數據,但是這個過程的HTML文檔很少。在Django Rest Framework中,如何使用TemplateHTMLRenderer查看分頁數據?

我遇到的問題是未分頁的結果。我可以訪問和遍歷所有數據,但我需要組織分頁。

views.py。

class BoxViewSet(viewsets.ModelViewSet): 

    queryset = Uploadobject.objects.all().exclude(verified=False) 
    serializer_class = BoxSerializer 
    permission_classes = (permissions.IsAuthenticatedOrReadOnly, 
          IsBox) 

    #renderer_classes = (renderers.TemplateHTMLRenderer) 
    def list(self, request): 
     queryset = Uploadobject.objects.all().exclude(verified=False) 


     page = self.paginate_queryset(queryset) 
     if page is not None: 
      serializer = self.get_serializer(page, data=request.data) 

      if serializer.is_valid(): 

       serdata = self.get_paginated_response(serializer.data) 
       data= {'objects': queryset, 
        'serializers': serializer} 
       return Response(data, template_name='restframework/objectlist.html') 

objectlist.html

{% if serializers %} 
{{ serializers }} 
{% endif %} 

    {% if objects %} 
    {% for object in objects %} 
     <ul> 
      <li>{{ object.Title }}</li> 
      <li>{{ object.Category }}</li> 
     </ul> 
    {% endfor %} 

    {% else %} 
     <p>No objects.</p> 
    {% endif %} 

我已經嘗試了很多東西,包括ListModelMixin和創建自定義分頁腳本所推薦pagination docs,但似乎沒有通過。我讀到了可以從Django進行分頁的方法,但我認爲在Django Rest Framework中保留所有分頁將會更簡單。從我可以告訴我有正確的後端數據和HTML只需要更正。總而言之,在我的模板頁面的分頁設置中顯示所有模型數據的最簡單方法是什麼?

回答

0

發生這種情況的原因是,即使您使用DRF方法對查詢集進行分頁,您仍然在使用原始查詢集發送響應。

像這樣的東西應該工作:

renderer_classes = (renderers.TemplateHTMLRenderer,) 

def list(self, request): 
    queryset = Uploadobject.objects.all().exclude(verified=False) 
    page = self.paginate_queryset(queryset) 
    if page is not None: 
     serializer = self.get_serializer(page, data=request.data) 
     return self.get_paginated_response(serializer.data) 
    data= {'objects': queryset, 'serializers': serializer} 
    return Response(data, template_name='restframework/objectlist.html') 
+0

這是怎麼文檔提到它,並好好嘗試爲我工作。首先我得到我需要添加的錯誤,如果'serializer.is_valid():',它足夠簡單,可以添加。我得到的錯誤是'在視圖或響應'上設置了'沒有'template_name'屬性設置返回模板響應。這不會返回一個Response對象,所以我也無法傳遞HTML參數。我可以從HTML頁面訪問分頁返回嗎? – RknRobin

+0

@RknRobin你找到了你的問題的答案? – Patrick

+0

@Patrick Nope。我從此放棄了我崇高的Django夢想。 – RknRobin

相關問題