注意這種寫法不支援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...