ผลต่างระหว่างรุ่นของ "Django Rest Framework"
จาก Morange Wiki
Patcharapun (คุย | มีส่วนร่วม) |
Patcharapun (คุย | มีส่วนร่วม) |
||
แถว 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 . | django-admin.py startproject tutorial . | ||
แถว 26: | แถว 46: | ||
django-admin.py startapp quickstart | django-admin.py startapp quickstart | ||
cd .. | cd .. | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
− | |||
'''ในการเรียกใช้ คำสั่ง python นั้นจะขึ้นอยู่กับเวอร์ชั่นของ python ที่ลง หากใช้ เวอร์ชั่น 3.5 ให้เรียกคำสั่ง python ว่า python3.5''' | '''ในการเรียกใช้ คำสั่ง 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> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
แถว 44: | แถว 85: | ||
* ก่อนอื่นเราจะต้องกำหนด 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> | ||
+ | |||
+ | |||
+ | |||
แถว 65: | แถว 110: | ||
* ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ 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): | ||
− | |||
− | |||
− | |||
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): | ||
− | |||
− | |||
− | |||
queryset = Group.objects.all() | queryset = Group.objects.all() | ||
serializer_class = GroupSerializer | serializer_class = GroupSerializer | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | |||
แถว 90: | แถว 134: | ||
* ต่อมาจะเป็นการเข้าไปตั้งค่าไฟล์ 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) | ||
− | |||
− | |||
urlpatterns = [ | urlpatterns = [ | ||
url(r'^', include(router.urls)), | url(r'^', include(router.urls)), | ||
แถว 107: | แถว 149: | ||
] | ] | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | |||
แถว 112: | แถว 158: | ||
* เพิ่มชื่อ แอปพลิเคชั่น ลงใน 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 | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | '''ทดลองเข้าใช้เว็บผ่าน URL : http://localhost:8000''' | ||
+ | |||
+ | |||
+ | |||
+ | [[ไฟล์:Django13.JPG|900px|thumb|left|'''12. Browse our API !!'']] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
รุ่นแก้ไขเมื่อ 06:31, 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 . cd tutorial django-admin.py startapp quickstart cd ..
ในการเรียกใช้ คำสั่ง python นั้นจะขึ้นอยู่กับเวอร์ชั่นของ python ที่ลง หากใช้ เวอร์ชั่น 3.5 ให้เรียกคำสั่ง python ว่า python3.5
- ในขั้นตอนต่อไปนี้เป็นการเชื่อมต่อฐานข้อมูลให้กับโปรเจคโดยการ 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): 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 ให้กับ โปรเจค
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
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', ต่อท้ายดังตัวอย่าง
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
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
ทดลองเข้าใช้เว็บผ่าน URL : http://localhost:8000
มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย
อ้างอิง
[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]