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

จาก Morange Wiki
 
(ไม่แสดง 7 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 8: แถว 8:
 
'''ขั้นตอนการตั้งค่า'''
 
'''ขั้นตอนการตั้งค่า'''
 
* ตั้งค่าโปรเจคใหม่ด้วยการสร้าง Directory ชื่อว่า tutorial และ สร้างแอปพลิเคชั่นใหม่ชื่อ quickstart โดยมีกระบวนการดังต่อไปนี้
 
* ตั้งค่าโปรเจคใหม่ด้วยการสร้าง Directory ชื่อว่า tutorial และ สร้างแอปพลิเคชั่นใหม่ชื่อ quickstart โดยมีกระบวนการดังต่อไปนี้
 +
 +
[[ไฟล์:Django1.JPG|200px|thumb|left|'''1. คำสั่งที่ใช้งาน สร้าง Folder''']]
 
<pre>
 
<pre>
 
1. สร้าง Folder ชื่อ tutorial  
 
1. สร้าง Folder ชื่อ tutorial  
 
mkdir tutorial
 
mkdir tutorial
 
cd tutorial
 
cd tutorial
 +
</pre>
 +
 +
  
 +
 +
[[ไฟล์:Django3.JPG|200px|thumb|left|'''2. คำสั่งที่ใช้งาน (virtualenv)''']]
 +
<pre>
 
2. สร้าง Virtual environment (virtualenv)
 
2. สร้าง Virtual environment (virtualenv)
 
virtualenv env
 
virtualenv env
 
source env/bin/activate
 
source env/bin/activate
 +
</pre>
  
 +
 +
 +
 +
[[ไฟล์:Django4.JPG|200px|thumb|left|'''3. ติดตั้ง Django REST framework''']]
 +
<pre>
 
3. ติดตั้ง Django REST framework ลงใน virtualenv
 
3. ติดตั้ง Django REST framework ลงใน virtualenv
 
pip install django
 
pip install django
 
pip install djangorestframework
 
pip install djangorestframework
 +
</pre>
  
 +
 +
 +
 +
[[ไฟล์:Django5.JPG|200px|thumb|left|'''4. ตั้งค่าโปรเจค''']]
 +
<pre>
 
4. ตั้งค่าโปรเจคและแอปพลิเคชั่นใน Django  
 
4. ตั้งค่าโปรเจคและแอปพลิเคชั่นใน Django  
django-admin.py startproject tutorial .  # Note the trailing '.' character
+
django-admin.py startproject tutorial .   
 
cd tutorial
 
cd tutorial
 
django-admin.py startapp quickstart
 
django-admin.py startapp quickstart
 
cd ..
 
cd ..
 +
</pre>
 +
 +
 +
 +
 +
 +
  
</pre>
 
  
 +
'''ในการเรียกใช้ คำสั่ง python นั้นจะขึ้นอยู่กับเวอร์ชั่นของ python ที่ลง หากใช้ เวอร์ชั่น 3.5 ให้เรียกคำสั่ง python ว่า python3.5'''
 
* ในขั้นตอนต่อไปนี้เป็นการเชื่อมต่อฐานข้อมูลให้กับโปรเจคโดยการ migrate
 
* ในขั้นตอนต่อไปนี้เป็นการเชื่อมต่อฐานข้อมูลให้กับโปรเจคโดยการ migrate
 +
[[ไฟล์:Django6.JPG|200px|thumb|left|'''5. Migrate ให้โปรเจคเข้ากับ Database''']]
 
<pre>
 
<pre>
 
python manage.py migrate
 
python manage.py migrate
 
</pre>
 
</pre>
 +
 +
 +
 +
 +
 +
  
 
* ต่อมาเป็นการสร้าง user โดยมี username : admin และ password : password123 เพื่อเอาไว้เข้าใช้ระบบ
 
* ต่อมาเป็นการสร้าง user โดยมี username : admin และ password : password123 เพื่อเอาไว้เข้าใช้ระบบ
 +
[[ไฟล์:Django7.JPG|200px|thumb|left|'''6. สร้าง User ให้กับโปรเจค''']]
 
<pre>
 
<pre>
 
python manage.py createsuperuser
 
python manage.py createsuperuser
 
</pre>
 
</pre>
 
   
 
   
 +
 +
 +
 +
 +
 +
  
  
 
'''Serializers'''
 
'''Serializers'''
  
ก่อนอื่นเราจะต้องกำหนด serializers. และ สร้างโมดูลใหม่ โดยสร้างไฟล์ชื่อ serializers.py ใน path  tutorial/quickstart/serializers.py
+
* ก่อนอื่นเราจะต้องกำหนด serializers. และ สร้างโมดูลใหม่ โดยสร้างไฟล์ชื่อ serializers.py ใน path  tutorial/quickstart/serializers.py
 +
[[ไฟล์:Django8.JPG|200px|thumb|left|'''7. เพิ่มไฟล์ serializers.py''']]
 
<pre>
 
<pre>
 
from django.contrib.auth.models import User, Group
 
from django.contrib.auth.models import User, Group
แถว 60: แถว 102:
 
         fields = ('url', 'name')
 
         fields = ('url', 'name')
 
</pre>
 
</pre>
 +
 +
 +
  
  
 
'''Views'''
 
'''Views'''
  
ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/quickstart/views.py ให้เป็น
+
* ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/quickstart/views.py ให้เป็น
<pre>from django.contrib.auth.models import User, Group
+
[[ไฟล์:Django9.JPG|200px|thumb|left|'''8. แก้ไขไฟล์ views.py''']]
 +
<pre>
 +
from django.contrib.auth.models import User, Group
 
from rest_framework import viewsets
 
from rest_framework import viewsets
 
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
 
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
แถว 71: แถว 118:
  
 
class UserViewSet(viewsets.ModelViewSet):
 
class UserViewSet(viewsets.ModelViewSet):
    """
 
    API endpoint that allows users to be viewed or edited.
 
    """
 
 
     queryset = User.objects.all().order_by('-date_joined')
 
     queryset = User.objects.all().order_by('-date_joined')
 
     serializer_class = UserSerializer
 
     serializer_class = UserSerializer
แถว 79: แถว 123:
  
 
class GroupViewSet(viewsets.ModelViewSet):
 
class GroupViewSet(viewsets.ModelViewSet):
    """
 
    API endpoint that allows groups to be viewed or edited.
 
    """
 
 
     queryset = Group.objects.all()
 
     queryset = Group.objects.all()
 
     serializer_class = GroupSerializer
 
     serializer_class = GroupSerializer
 
</pre>
 
</pre>
 +
 +
 +
  
  
 
'''URL'''
 
'''URL'''
  
ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/urls.py เพื่อตั้งค่า URL ให้กับ โปรเจค
+
* ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/urls.py เพื่อตั้งค่า URL ให้กับ โปรเจค
 
+
[[ไฟล์:Django10.JPG|200px|thumb|left|'''9. แก้ไขไฟล์ urls.py''']]
 
<pre>
 
<pre>
 
from django.conf.urls import url, include
 
from django.conf.urls import url, include
แถว 100: แถว 144:
 
router.register(r'groups', views.GroupViewSet)
 
router.register(r'groups', views.GroupViewSet)
  
# Wire up our API using automatic URL routing.
 
# Additionally, we include login URLs for the browsable API.
 
 
urlpatterns = [
 
urlpatterns = [
 
     url(r'^', include(router.urls)),
 
     url(r'^', include(router.urls)),
แถว 107: แถว 149:
 
]
 
]
 
</pre>
 
</pre>
 +
 +
 +
 +
  
  
 
'''Settings'''
 
'''Settings'''
  
เพิ่มชื่อ แอปพลิเคชั่น ลงใน Module ชือ INSTALLED_APPS ในไฟล์ tutorial/settings.py โดยเพิ่ม 'rest_framework', ต่อท้ายดังตัวอย่าง
+
* เพิ่มชื่อ แอปพลิเคชั่น ลงใน Module ชือ INSTALLED_APPS ในไฟล์ tutorial/settings.py โดยเพิ่ม 'rest_framework', ต่อท้ายดังตัวอย่าง
 
+
[[ไฟล์:Django11.JPG|200px|thumb|left|'''10. แก้ไขไฟล์ settings.py''']]
 
<pre>
 
<pre>
 
INSTALLED_APPS = (
 
INSTALLED_APPS = (
แถว 129: แถว 175:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
 +
 +
  
 
'''เป็นการสำเร็จ ต่อไปจะเป็นการเริ่มทดสอบ API โดยการ Run Server'''
 
'''เป็นการสำเร็จ ต่อไปจะเป็นการเริ่มทดสอบ API โดยการ Run Server'''
 +
[[ไฟล์:Django12.JPG|200px|thumb|left|'''11. Run Server!!''']]
 
<pre>
 
<pre>
 
python ./manage.py runserver
 
python ./manage.py runserver
 +
python manage.py runserver
 +
หรือ
 +
python3.x manage.py runserver
 
</pre>
 
</pre>
  
แถว 139: แถว 193:
  
  
'''ผลลัพธ์'''
 
[[ไฟล์:Django1.JPG|500px|thumb|left]]
 
  
[[ไฟล์:Django2.JPG|500px|thumb|left]].
 
  
  
แถว 148: แถว 199:
  
  
# สร้าง Folder ชื่อ tutorial
+
 
 +
 
 +
'''ทดลองเข้าใช้เว็บผ่าน URL : http://localhost:8000'''
 +
 
 +
 
 +
 
 +
[[ไฟล์:Django13.JPG|900px|thumb|left|'''12. Browse our API !!'']]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
  
แถว 156: แถว 252:
 
'''อ้างอิง'''
 
'''อ้างอิง'''
  
[http://www.django-rest-framework.org/tutorial/quickstart/]  
+
[http://www.django-rest-framework.org/tutorial/quickstart/] : Django-rest-framework.org
 
 
  
  
== Tutorial ==
 
  
 +
== Tutorial เพิ่มเติม ==
  
1 - Serialization
+
1 - Serialization : [http://www.django-rest-framework.org/tutorial/1-serialization/]
  
2 - Requests & Responses
+
2 - Requests & Responses : [http://www.django-rest-framework.org/tutorial/2-requests-and-responses/]
  
3 - Class based views
+
3 - Class based views : [http://www.django-rest-framework.org/tutorial/3-class-based-views/]
  
4 - Authentication & permissions
+
4 - Authentication & permissions : [http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/]
  
5 - Relationships & hyperlinked APIs
+
5 - Relationships & hyperlinked APIs : [http://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis/]
  
6 - Viewsets & routers
+
6 - Viewsets & routers : [http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/]

รุ่นแก้ไขปัจจุบันเมื่อ 06:33, 8 มิถุนายน 2559

Django REST framework

Quickstart

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

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

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



มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
2. คำสั่งที่ใช้งาน (virtualenv)
2. สร้าง Virtual environment (virtualenv)
virtualenv env
source env/bin/activate



มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
3. ติดตั้ง Django REST framework
3. ติดตั้ง Django REST framework ลงใน virtualenv
pip install django
pip install djangorestframework



มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
4. ตั้งค่าโปรเจค
4. ตั้งค่าโปรเจคและแอปพลิเคชั่นใน Django 
django-admin.py startproject tutorial .  
cd tutorial
django-admin.py startapp quickstart
cd ..





ในการเรียกใช้ คำสั่ง python นั้นจะขึ้นอยู่กับเวอร์ชั่นของ python ที่ลง หากใช้ เวอร์ชั่น 3.5 ให้เรียกคำสั่ง python ว่า python3.5

  • ในขั้นตอนต่อไปนี้เป็นการเชื่อมต่อฐานข้อมูลให้กับโปรเจคโดยการ migrate
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
5. Migrate ให้โปรเจคเข้ากับ Database
python manage.py migrate




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





Serializers

  • ก่อนอื่นเราจะต้องกำหนด serializers. และ สร้างโมดูลใหม่ โดยสร้างไฟล์ชื่อ serializers.py ใน path tutorial/quickstart/serializers.py
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
7. เพิ่มไฟล์ 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 ให้เป็น
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
8. แก้ไขไฟล์ 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):
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer



URL

  • ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ tutorial/urls.py เพื่อตั้งค่า URL ให้กับ โปรเจค
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
9. แก้ไขไฟล์ 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)

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', ต่อท้ายดังตัวอย่าง
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
10. แก้ไขไฟล์ settings.py
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

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
11. Run Server!!
python ./manage.py runserver
python manage.py runserver
หรือ
python3.x manage.py runserver







ทดลองเข้าใช้เว็บผ่าน URL : http://localhost:8000


มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
'12. Browse our API !!























อ้างอิง

[1] : Django-rest-framework.org


Tutorial เพิ่มเติม

1 - Serialization : [2]

2 - Requests & Responses : [3]

3 - Class based views : [4]

4 - Authentication & permissions : [5]

5 - Relationships & hyperlinked APIs : [6]

6 - Viewsets & routers : [7]