Home
要求
python版本3.6以上
Django版本 (2.2, 3.0, 3.1, 3.2, 4.0, 4.1)
安装
pip install djangorestframework
快速开始
- 设置
创建tutorial
的新django项目,然后启动一个名为 quickstart
的新app。
创建一个新项目和一个单个应用
django-admin.py startproject tutorial . # 注意结尾的'.'符号
cd tutorial
django-admin.py startapp quickstart
然后直接同步数据库, 创建用户
python manage.py migrate
python manage.py createsuperuser
- Serializers
我们创建一个名为 tutorial/quickstart/serializers.py
的文件,来用作我们的数据表示。
作用:
1.将queryset与model实例等进行序列化,转化成json格式,返回给用户(api接口)
2.将post与patch/put的上来的数据进行验证
3.对post与patch/put数据进行处理
简单来说,针对get来说,serializers的作用体现在第一条,但如果是其他请求,serializers能够发挥2,3条的作用
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
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路径。
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
"""
允许组查看或编辑的API路径。
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
- URLs
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)),
]
这样我们就可以进行数据接口访问啦http://127.0.0.1:8000/users/..
序列化
创建django项目,以及配置环境,就不细说了。创建snippets
app
创建model,执行迁移
from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles
LEXERS = [item for item in get_all_lexers() if item[1]]
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
STYLE_CHOICES = sorted((item, item) for item in get_all_styles())
class Snippet(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
code = models.TextField()