ผลต่างระหว่างรุ่นของ "Django Rest Framework"

จาก Morange Wiki
แถว 41: แถว 41:
  
  
 +
'''Serializers'''
  
 +
ก่อนอื่นเราจะต้องกำหนด serializers. และ สร้างโมดูลใหม่ โดยสร้างไฟล์ชื่อ serializers.py ใน path  tutorial/quickstart/serializers.py
 +
<pre>
 +
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')
 +
</pre>
  
  
 +
'''Views'''
  
 +
ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/quickstart/views.py ให้เป็น
 +
<pre>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
 +
</pre>
  
  
 +
'''URL'''
  
 +
ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/urls.py เพื่อตั้งค่า URL ให้กับ โปรเจค
  
 +
<pre>
 +
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'))
 +
]
 +
</pre>
 +
 +
 +
'''Settings'''
 +
 +
เพิ่มชื่อ แอปพลิเคชั่น ลงใน Module ชือ INSTALLED_APPS ในไฟล์ tutorial/settings.py โดยเพิ่ม 'rest_framework', ต่อท้ายดังตัวอย่าง
 +
 +
<pre>
 +
INSTALLED_APPS = (
 +
    'django.contrib.admin',
 +
    'django.contrib.auth',
 +
    'django.contrib.contenttypes',
 +
    'django.contrib.sessions',
 +
    'django.contrib.messages',
 +
    'django.contrib.staticfiles',
 +
    'rest_framework',
 +
)
 +
 +
REST_FRAMEWORK = {
 +
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
 +
    'PAGE_SIZE': 10
 +
}
 +
</pre>
 +
 +
'''เป็นการสำเร็จ ต่อไปจะเป็นการเริ่มทดสอบ API โดยการ Run Server'''
 +
<pre>
 +
python ./manage.py runserver
 +
</pre>
  
  

รุ่นแก้ไขเมื่อ 04:53, 8 มิถุนายน 2559

Django REST framework

Quickstart

Quickstart เป็นหัวข้อสำหรับคนที่เริ่มทำเว็บ API และ REST framework โดยจะเป็นการสร้าง API อย่างง่าย เพื่อให้ผู้ดูแลระบบสามารถ เพิ่ม ลบ แก้ไข ผู้ใช้งานได้

ขั้นตอนการตั้งค่า

  • ตั้งค่าโปรเจคใหม่ด้วยการสร้าง Directory ชื่อว่า tutorial และ สร้างแอปพลิเคชั่นใหม่ชื่อ quickstart โดยมีกระบวนการดังต่อไปนี้
1. สร้าง Folder ชื่อ tutorial 
mkdir tutorial
cd tutorial

2. สร้าง Virtual environment (virtualenv)
virtualenv env
source env/bin/activate

3. ติดตั้ง Django REST framework ลงใน virtualenv
pip install django
pip install djangorestframework

4. ตั้งค่าโปรเจคและแอปพลิเคชั่นใน Django 
django-admin.py startproject tutorial .  # Note the trailing '.' character
cd tutorial
django-admin.py startapp quickstart
cd ..

  • ในขั้นตอนต่อไปนี้เป็นการเชื่อมต่อฐานข้อมูลให้กับโปรเจคโดยการ migrate
python manage.py migrate
  • ต่อมาเป็นการสร้าง user โดยมี username : admin และ password : password123 เพื่อเอาไว้เข้าใช้ระบบ
python manage.py createsuperuser


Serializers

ก่อนอื่นเราจะต้องกำหนด serializers. และ สร้างโมดูลใหม่ โดยสร้างไฟล์ชื่อ serializers.py ใน path tutorial/quickstart/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')


Views

ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/quickstart/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


URL

ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/urls.py เพื่อตั้งค่า URL ให้กับ โปรเจค

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'))
]


Settings

เพิ่มชื่อ แอปพลิเคชั่น ลงใน Module ชือ INSTALLED_APPS ในไฟล์ tutorial/settings.py โดยเพิ่ม 'rest_framework', ต่อท้ายดังตัวอย่าง

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
)

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
    'PAGE_SIZE': 10
}

เป็นการสำเร็จ ต่อไปจะเป็นการเริ่มทดสอบ API โดยการ Run Server

python ./manage.py runserver



ผลลัพธ์

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย

.



  1. สร้าง Folder ชื่อ tutorial



อ้างอิง

[1]


Tutorial

1 - Serialization

2 - Requests & Responses

3 - Class based views

4 - Authentication & permissions

5 - Relationships & hyperlinked APIs

6 - Viewsets & routers