Django學習系列之django restframework


曾幾何時,Ajax已經統治了Web開發中的客戶端,而REST成為web世界中最流行的架構風格(architecture style)。所以我們的選擇變得很簡單:前端ajax訪問后端的RESTful API對資源進行操作
Django中有一些可選的REST framework,比如django-piston,django-tasypie。 但是我和google(呵呵,不好意思)推薦這個:Django REST framework

django-framework就是定義一個url,可以利用這個url去數據庫中讀數據,或者寫數據

安裝配置django-framework

安裝django-framework

pip install djangorestframework
pip install markdown      
pip install django-filter

在Project中配置django-framework

打開project的settings.py

INSTALLED_APPS = (
    ...
    'rest_framework',
)

REST_FRAMEWORK = {
 # Use Django's standard `django.contrib.auth` permissions,
 # or allow read-only access for unauthenticated users.
 'DEFAULT_PERMISSION_CLASSES': [
     'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' #所有人都能訪問API,有讀寫權限
 ]
}

實例一:編寫一個API用來獲取用戶信息

在Madking的url.py里配置api的url

from assets import rest_urls as asset_urls


urlpatterns = [
    url(r'^api/', include(asset_urls)),  #api的入口url


]

在asset的rest_urls.py里注冊並關聯視圖

from django.conf.urls import url, include
from rest_framework import routers
#導入rest_viewset,取個別名views
from assets import rest_viewset as views
#這個是rest_framework封裝django 的routers
router = routers.DefaultRouter()

#將views里的UserViewSet和AssetViewSet注冊進來
#用戶請求http://127.0.0.1:8000/api/users/和http://127.0.0.1:8000/api/asset/就能獲取到數據
router.register(r'users', views.UserViewSet) 
router.register(r'asset', views.AssetViewSet)


urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), #這個是API的認證,必須得登錄才能請求API

]

在asset的rest_viewset.py里定義去數據庫里查詢數據

from rest_framework import viewsets
from assets import models

from assets import rest_serializers

class UserViewSet(viewsets.ModelViewSet):
    queryset = models.UserProfile.objects.all()          #去查詢所有的數據
    serializer_class = rest_serializers.UserSerializers  #序列化(表現層,將數據按照一定格式返回給用戶)

class AssetViewSet(viewsets.ModelViewSet):
    queryset = models.Asset.objects.all()
    serializer_class = rest_serializers.AssetSerializer

在asset里的rest_serializers.py里定義

#導入表結構
from assets import models
#導入serializer方法
from rest_framework import serializers

#獲取UserProfile表里的信息
class UserSerializers(serializers.ModelSerializer):
    class Meta:
        #指定數據庫,
        model = models.UserProfile
        #指定返回給用戶的具體表中的哪些字段
        fields = ('username','name')

#獲取Asset表里的信息
class AssetSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Asset
        depth=2
        fields = ('name', 'sn','server','networkdevice')

測試

訪問http://127.0.0.1:8000/api/能看到API

 

 訪問獲取用戶信息的API:http://127.0.0.1:8000/api/users/

 


免責聲明!

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



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