django-rest-framework

Django REST框架是一個用於構建Web API的功能強大且靈活的工具包html

REST框架的強大功能:前端

  • Web能夠瀏覽的API對於開發人員來講是一個極大的可用性
  • 身份認證策略包括OAuth 1a 和 OAuth2a的軟件包
  • 支持ORM和非ORM數據源的序列化
  • 可基於常規的功能視圖徹底自定義
  • 有普遍的文檔和良好的社區支持

 使用REST框架的要求git

  • Python(2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
  • Django(1.10, 1.11, 2.0)

 如下軟件包是可選的github

  • coreapi 模式生成支持
  • Markdown 可瀏覽API的Markdown支持
  • django-filter 過濾支持
  • django-crispy-forms 改進了用於過濾的HTML顯示
  • django-guardian 對象級權限支持

 安裝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指南

  • Requests
  • Responses
  • Views
  • Generic views
  • Viewsets
  • Routers
  • Parsers
  • Renderers
  • Serializers
  • Serializer fields
  • Serializer relations
  • Validators
  • Authentication
  • Permissions
  • Throttling
  • Filtering
  • Pagination
  • Versioning
  • Content negotiation
  • Metadata
  • Schemas
  • Format suffixes
  • Returning URLs
  • Exceptions
  • Status codes
  • Testing
  • Settings
相關文章
相關標籤/搜索