django rest framework我的學習筆記(一)————Install

本文主要是用來記錄本身學習django-rest-framework的過程。其中可能會有不少本身的錯誤理解。python

這裏主要會用到的知識有django

1. [django](https://www.djangoproject.com/)  
2. [django-rest-framework](http://www.django-rest-framework.org/)  
3. restful
    - [百度百科](https://baike.baidu.com/item/RESTful/4406165?fr=aladdin)
    - [阮一峯理解RESTful架構](http://www.ruanyifeng.com/blog/2011/09/restful)  
    - 其他請自行百度。  
4. [python](https://www.python.org/)

本系列中使用的版本號api

1. python3.6
2. django1.11.4
3. django-rest-framework3

官方文檔restful

安裝

pip install djangorestframework
pipinstall django-filter #過濾支持,官方推薦使用

添加 'rest_framework'django settings文件的 INSTALLED_APPS中:架構

INSTALL_APPS = {
    ...
    'rest_framework',
}

若是你想使用可視化的API,能夠添加以下代碼到根urls.py文件中:學習

urlpatterns = [
    ...
    url(r'^api-auth/',include('rest_framework.urls',namespace='rest_framework')),
]

注意這個url能夠是任何你想要的,可是必須導入 rest_framework.urls,而且 namespace必須爲rest_framework。在django1.9+中,你能夠不用設置namespace,rest_framework將會爲你設置。url

圖片描述

例子

讓咱們來看一個使用 REST framework構建的簡單的 model-backed API.
咱們建立一個 read-write API,來訪問咱們項目中用戶的信息。
REST framework API 全部的全局設置都放在 settings.pyREST_FRAMEWORK字典中。spa

REST_FRAMEWORK = {
    # 使用django標準的 'django.contrib.auth'權限,未認證的用戶只讀權限
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.premissions.DjangoModelPermissionOrAnonReadOnly'
    ]
}

不要忘記將 rest_framework添加到你的INSTALLED_APPS中。
咱們如今準備建立咱們的API了。在咱們的根urls.py模塊中:rest

from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

# Seriallzers 定義這個API的表現
class UserSerializer(serializers.HyperlinkModelSerializer):
    class Meta:
        model = User
        fields = ('url','username','email','is_staff')
  

#ViewSets定義這個API的行爲
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
   
#Routers提供了一種簡單的方式來設置url
router = routers.DefaultRouter()
router.register(r'users',UserViewSet)

#使用URL路由自動鏈接咱們的API
#此外,咱們還添加了一個可視化的Url
urlpatterns = [
    url('^',include(router.urls)),
    url('^api-auth/',include('rest_framework.urls'),namesapce='rest_framework'),
]
相關文章
相關標籤/搜索