rest framework 中的分頁

2021-10-03 19:12:15 字數 3407 閱讀 9876

注意這種寫法不支援api_view和api_view

配置setting

'default_pagination_class'

:

2.建立乙個資料夾mypagenumberpagination

class

mypagenumberpagination

(pagenumberpagination)

: page_size =

1 max_page_size =

1 page_size_query_param =

'size'

page_query_param =

'page'

''' age_query_param:表示url中的頁碼引數

page_size_query_param:表示url中每頁數量引數

page_size:表示每頁的預設顯示數量

max_page_size:表示每頁最大顯示數量,做限制使用,避免突然大量的查詢資料,資料庫崩潰

'''

##切割分頁

from rest_framework.pagination import limitoffsetpagination

class

mypagenumberpagination

(limitoffsetpagination)

: default_limit =

1 limit_query_param =

'limit'

offset_query_param =

'offset'

max_limit =

1'''

default_limit:表示預設每頁顯示幾條資料

limit_query_param:表示url中本頁需要顯示數量引數

offset_query_param:表示從資料庫中的第幾條資料開始顯示引數

max_limit:表示每頁最大顯示數量,做限制使用,避免突然大量的查詢資料,資料庫崩潰

'''

##加密分頁

from rest_framework.pagination import cursorpagination

class

mypagenumberpagination

(cursorpagination)

: cursor_query_param =

'cursor'

page_size =

1 ordering =

'id'

page_size_query_param =

'size'

max_page_size =

1'''

cursor_query_param:表示url中頁碼的引數

page_size_query_param:表示每頁顯示資料量的引數

max_page_size:表示每頁最大顯示數量,做限制使用,避免突然大量的查詢資料,資料庫崩潰

ordering:表示返回資料的排序方式

'''

api_view

class

mypagenumberpagination

(pagenumberpagination)

: page_size =

1 max_page_size =

1 page_size_query_param =

'size'

page_query_param =

'page'

from rest_framework.decorators import api_view

from django.views.decorators.csrf import csrf_exempt

from

.models import jokeimg

from

.serializer import jokeimgserializer

@csrf_exempt

@api_view(

['get'

,'post'])

defjoke_img

(request)

:if request.method ==

'get'

: queryset = jokeimg.objects.

all(

) page = mypagenumberpagination(

) instance = page.paginate_queryset(request=request, queryset=queryset)

if instance is

notnone

: serializer = jokeimgserializer(instance, many=

true

)return page.get_paginated_response(serializer.data)

serializer = jokeimgserializer(queryset, many=

true

)return response(serializer.data)

apiview

from

.models import jokeimg

from

.serializer import jokeimgserializer

class

jokeview

(apiview)

:def

get(request,

*args,

**kwargs)

: queryset = jokeimg.objects.

all(

) page = mypagenumberpagination(

) instance = page.paginate_queryset(request=request, queryset=queryset)

if instance is

notnone

: serializer = jokeimgserializer(instance, many=

true

)return page.get_paginated_response(serializer.data)

serializer = jokeimgserializer(queryset, many=

true

)return response(serializer.data)

django中restframework巢狀序列化

問題 定義好了序列化器後有沒有遇到過想要序列化的資料表中有外來鍵的情況,我們需要的這個和外來鍵關聯的資料 model.py 報警表 class police models.model 報警型別 police models.charfield max length 50 開始範圍 begin mode...

restframework的許可權

許可權的主要應用比如指定的資料,vip使用者或者付費才能 的,普通使用者不能訪問,我們就可以用許可權元件對其進行限制 許可權的都是發生在認證後面的,所以認證時要返回obj.user,許可權判斷的時候好直接獲取使用者 from rest framework.permissions import bas...

初始Rest Framework的魅力

1.建立序列化器 在應用中新建serializers.py用於儲存該應用的序列化器。class infoserializer serializers.modelserializer 圖書資料序列化器 class meta model info fields all from rest framewo...