Django REST框架是一個用於構建Web API的功能強大且靈活的工具包html
REST框架的強大功能:前端
使用REST框架的要求git
如下軟件包是可選的github
安裝django
使用pip安裝,以及任何你須要安裝的軟件包 注:安裝djangorestframework以前必定要先安裝djangoapi
pip install djangorestframework
pip install markdown
pip install django-filter
或者從github克隆項目瀏覽器
git clone git@github.com:encode/django-rest-framework.git
將'rest_framework'添加的django的settings.py的INSTALLED_APPS設置中markdown
INSTALLED_APPS = ( ... 'rest_framework', )
添加到urls.py文件中,便可使用可瀏覽的API框架
from django.conf.urls import url, include urlpatterns = [ ... url(r'^api-auth/', include('rest_framework.urls')) ]
REST框架API的任何全局設置都保存在一個名爲REST_FRAMEWORK的配置字典中,首先要將內容配置到settings.py模塊中工具
舉例說明:
咱們來建立一個API來對咱們對數據進行分頁
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10, # 每頁顯示多少條數據 }
首先對咱們對數據進行序列化,在當前項目中建立serializers.py文件
from rest_framework import serializers from goods.models import Goods, GoodsCategory # django的model class GoodsCategorySerializer(serializers.ModelSerializer): class Meta: model = GoodsCategory fields = "__all__" # fields須要在頁面顯示的數據內容 class GoodsSerializer(serializers.ModelSerializer): category = GoodsCategorySerializer() class Meta: model = Goods # fields = ("category", "name", "market_price", "add_time", "goods_front_image") fields = "__all__"
建立視圖,views.py
from .models import Goods from .serializers import GoodsSerializer from rest_framework import mixins from rest_framework import viewsets class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializer
urls.py
from django.conf.urls import url, include from rest_framework.documentation import include_docs_urls from goods.views import GoodsListViewSet from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register(r'goods', GoodsListViewSet) urlpatterns =[ url(r'^api-auth/', include('rest_framework.urls')), url(r'^', include(router.urls)), ]
如今就能夠經過http://127.0.0.1:8000/goods/的瀏覽器中打開該API,並查看新的「用戶」API。若是您使用右上角的登陸控件,您還能夠從系統添加,建立和刪除用戶。
拓展功能,若是你須要自定製分頁內容,好比:每頁最多顯示多少條數據,你想要在這一頁像後臺指定訪問多少條數據,下一頁頁碼標示等
views.py更改以下
from .models import Goods from .serializers import GoodsSerializer from rest_framework import mixins, generics from rest_framework.pagination import PageNumberPagination from rest_framework import viewsets class GoodsSetPagination(PageNumberPagination): page_size = 10 # 每一天顯示10條數據 page_size_query_param = 'page_size' # 像後臺請求前端要顯示頁碼的大小(條數) page_query_param = 'p' # 瀏覽器導航欄下一頁的提示 max_page_size = 100 # 每頁最多顯示多少條 class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializer pagination_class = GoodsSetPagination
將settings.py模塊中如下內容註釋掉,由於views.py中的
class GoodsSetPagination(PageNumberPagination)以及繼承了
PageNumberPagination
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10, # 每頁顯示多少條數據 }
組成REST框架的構建塊,它會讓你全面瞭解全部內容組合到一塊兒的強大功能,強烈推薦學習
API指南