Django REST框架 -1
項目設置
創建一個名為Django的新項目tutorial,然后啟動一個新的應用程序quickstart。
# Create the project directorymkdir tutorial
cd tutorial # Create a virtualenv to isolate our package dependencies locally
virtualenv env
source env/bin/activate # On Windows use `env\Scripts\activate`
# Install Django and Django REST framework into the virtualenv pip install django pip install djangorestframework # Set up a new project with a single application
django-admin.py startproject tutorial . # Note the trailing '.' character 同級目錄下
cd tutorial
django-admin.py startapp quickstart
cd .. #下級目錄
現在第一次同步您的數據庫:
python manage.py migrate
我們還將創建一個以admin密碼命名的初始用戶password123。我們稍后將在該示例中驗證該用戶。
python manage.py createsuperuser
一旦你設置了一個數據庫,并且初始用戶創建并準備好了,打開應用程序的目錄,我們將得到編碼...
串行器
首先我們要定義一些序列化程序。我們創建一個名為tutorial/quickstart/serializers.py我們將用于我們的數據表示的新模塊。
from django.contrib.auth.models import User, Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelsSerializer):
class Meta:
model = User
fields = ('url','username','email','groups')
class GroupSerializers(serializers.HyperlinkedModelsSerializer):
class Meta:
model = Group
fields = ('url','name')
請注意,在這種情況下,我們正在使用超鏈接關系HyperlinkedModelSerializer。您還可以使用主鍵和各種其他關系,但超鏈接是好的RESTful設計。
查看
對,我們最好再寫一些看法。打開tutorial/quickstart/views.py并打字。
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializers
?
class UserViewSet(viewset.ModelViewSet):
queryset = User.object.all().order_by('-date_joined')
serializers_class = UserSerializer
?
class GroupViewSet(viewset.ModelsViewSet):
queryset = Group.object.all()
serializer_class = GroupSerializer
而不是寫多個視圖,我們將所有常見行為分組到被調用的類中ViewSets。
如果我們需要,我們可以輕松地將這些細節分解為個人觀點,但是使用視圖可以使視圖的邏輯很好地組織起來,并且非常簡潔。
?
網址
好的,現在我們來連接API的URL。到tutorial/urls.py...
from django.conf.urls import url, include
from rest_framework import routers
from tutrial.quickstart import views
?
router = routers.DefalutRouter()
router.register(r'user', views.UserViewSet)
router.register(r'group',views.GroupViewSet)
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/',include('rest_framework.urls', namespace='rest_framework'))
]
?
因為我們使用的是視圖而不是視圖,所以我們可以通過簡單地使用路由器類注冊該視圖來自動生成API的URL conf。
再次,如果我們需要對API URL的更多控制,我們可以簡單地將其下拉到使用常規的基于類的視圖,并明確地編寫URL conf。
最后,我們將包括默認登錄和注銷視圖,以便與可瀏覽的API一起使用。這是可選的,但如果您的API需要身份驗證,并且您想要使用可瀏覽的API,那么這是非常有用的。
設置
我們也想設置一些全局設置。我們想打開分頁,我們希望我們的API只能由管理員使用。設置模塊將在tutorial/settings.py
INSTALLED_APPS = (
'rest_framework',
)
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAdminUser', ], 'PAGE_SIZE': 10 }好的,我們完成了
測試我們的API
我們現在準備測試我們構建的API。我們從命令行啟動服務器。
python manage.py runserver我們現在可以從命令行訪問我們的API,使用像curl...
bash: curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/ { "count": 2, "next": null, "previous": null, "results": [ { "email": "admin@example.com", "groups": [], "url": "http://127.0.0.1:8000/users/1/", "username": "admin" }, { "email": "tom@example.com", "groups": [ ], "url": "http://127.0.0.1:8000/users/2/", "username": "tom" } ] }或使用httpie,命令行工具...
bash: http -a admin:password123 http://127.0.0.1:8000/users/ HTTP/1.1 200 OK ... { "count": 2, "next": null, "previous": null, "results": [ { "email": "admin@example.com", "groups": [], "url": "http://localhost:8000/users/1/", "username": "paul" }, { "email": "tom@example.com", "groups": [ ], "url": "http://127.0.0.1:8000/users/2/", "username": "tom" } ] }或直接通過瀏覽器,轉到URL?http://127.0.0.1:8000/users/...
如果您正在使用瀏覽器,請確保使用右上角的控件進行登錄。
? ??
轉載于:https://www.cnblogs.com/chenyang13677/p/7554411.html
總結
以上是生活随笔為你收集整理的Django REST框架 -1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vant 1.0 发布:轻量、可靠的移动
- 下一篇: web 信息模糊检索等 Lucene的实