Django REST framework(官方說明文檔翻譯)(1快速開始 )


http://www.django-rest-framework.org/tutorial/quickstart/

第一部分:快速開始

我們將創建一個簡單的api接口,用來給admin用戶查看及編輯系統里面的用戶和群組

1)新建項目

新建一個名為tutorial的django項目,然后新建一個名為 quickstart的app
1、這里我們打開編輯器pycharm,新建項目

**2、通過腳手架命令新建app **

app創建在項目路徑下面可能看起來會有點奇怪,這樣做其實是為了防止和外部的命名空間沖突

3、接下來我們第一次來做數據庫的同步
用到命令:python manage.py migrate

4、然后我們也需要初始化一個名為 admin ,密碼為 password123 的用戶。通過如下命令:

python manage.py createsuperuser --email admin@example.com --username admin


當我們創建一個db且初始化用戶創建好后,我們就可以打開app的目錄開始coding了

2)序列化Serializers

首先我們要定義一些序列化類,我們需要在quickstart路徑下新建一個名為serializers.py的文件並加入下面的代碼,它將用於數據展示。

# serializers.py
from django.contrib.auth.models import User, Group
from rest_framework import serializers


class UserSerializer(serializers.HyperlinkedModelSerializer):
	class Meta:
		model = User
		fields = ('url', 'username', 'email', 'groups')


class GroupSerializer(serializers.HyperlinkedModelSerializer):
	class Meta:
		model = Group
		fields = ('url', 'name')  

注意到了么?我們在上面的例子中用到了超鏈接關系類:HyperlinkedModelSerializer。當然你可以用基礎的key和各種其他的關系,但超鏈接是一個很不錯的RESTful設計

3)視圖Views

是的,現在我們最好寫一些視圖。打開tutorial/quickstart/views.py文件開始敲下面的代碼吧 :

# views.py
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer


class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer  

我們將所有常用的功能組織到一個名為:ViewSets 的類中,而不是寫很多view。 我們可以輕易的分解到單個view中如果我們需要的話,但是用viewsets 視圖集可以保持良好的組織邏輯性和精確性。

4) URLs

好的,現在我們在tutorial/urls.py文件中接通的接口地址:

# urls.py
from django.conf.urls import url, include
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]  
  • 因為我們正在用viewsets視圖集類而不是視圖views類,所以我們可以給我們的接口自動生成url配置,只需要通過一個router類簡單的注冊下viewsets視圖集類;
  • 再說一遍,如果我們需要更所的對API URLs的控制,我們僅僅只需要選擇用常規的基於類的視圖(class-based views),及顯示的寫URL conf。
  • 最后,我們這里還可以在瀏覽器上用默認的登錄和登出視圖接口。當然,這是可以選擇的,但是如果你的api需要授權認證或者你想用瀏覽器接口,它就會變得很有用了。

5) 配置Settings

在tutorial/settings.py配置文件的INSTALLED_APPS塊中加上'rest_framework':

INSTALLED_APPS = (
    ...
    'rest_framework',
)

ok,這樣我們就都搞定了!

6) 測試我們的web接口

我們現在准備測試我們創建的接口了,當然我們需要先在命令行啟動我們的服務: python manage.py runserver

然后直接在瀏覽器中請求我們的接口服務吧,請求地址 http://127.0.0.1:8000/users/

如果你是通過瀏覽器調用接口的,確認下是不是登錄了哈。
是的,先在看來DRF這個真的很棒,也很簡單。
如果你想要更深入的理解如何使用DRF,請看下一章或英文官方接口文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM