Django REST框架简单使用
建立一个新的环境
在我们做任何其他事情之前,我们将使用virtualenv创建一个新的虚拟环境。这将确保我们的包配置与我们正在处理的任何其他项目保持良好隔离。
virtualenv env
source env/bin/activate
现在我们已经进入了virtualenv环境,我们可以安装我们的包需求。
pip install django==1.11
pip install djangorestframework
建立一个新的项目
创建一个可以使用的新项目
django-admin startproject demoDRF
cd demoDRF
完成后,我们可以创建一个应用程序,我们将用它来创建一个简单的Web API。
python manage.py startapp demo
我们需要添加我们的新demo应用和rest_framework用用INSTALLED_APPS。让我们编辑demoDRF/settings.py文件:
INSTALLED_APPS = ( ... 'rest_framework', 'demo', )
创建要使用的模型
首先创建一个demo用于存储代码片段的简单模型。继续编辑demo/models.py
文件
1 from django.db import models 2 3 4 # Create your models here. 5 class Select(models.Model): 6 title = models.TextField() 7 a = models.CharField(max_length=255) 8 b = models.CharField(max_length=255) 9 c = models.CharField(max_length=255, blank=True, null=True) 10 d = models.CharField(max_length=255, blank=True, null=True) 11 select_answer = models.CharField(max_length=4) 12 type = models.IntegerField() 13 14 class Meta: 15 db_table = 'select'
我们还需要为我们的代码段模型创建初始迁移,并首次同步数据库。
python manage.py makemigrations demo
python manage.py migrate
创建一个Serializer类
我们需要开始使用Web API的第一件事是提供一种将代码段实例序列化和反序列化为表示形式的方法json
。我们可以通过声明与Django表单非常相似的序列化器来完成此操作。在名为demo的目录中创建一个文件,serializers.py
然后添加以下内容。
1 from rest_framework import serializers 2 from .models import Select 3 4 5 class SelectSerializer(serializers.ModelSerializer): 6 class Meta: 7 model = Select 8 fields = ('id', 'title', 'a', 'b', 'c', 'd', 'select_answer', 'type')
编写常规Django视图
让我们看看如何使用我们的新Serializer类编写一些API视图。
编辑demo/views.py
文件,然后添加以下内容。
1 from rest_framework import viewsets 2 from .models import Select 3 from .serializers import SelectSerializer 4 5 6 # Create your views here. 7 class SelectViewSet(viewsets.ModelViewSet): 8 queryset = Select.objects.all() 9 serializer_class = SelectSerializer
编写URL视图
最后,我们需要连接这些视图。创建demo/urls.py
文件:
1 from django.conf.urls import url, include 2 from rest_framework.routers import DefaultRouter 3 from .views import SelectViewSet 4 5 6 router = DefaultRouter() 7 router.register(r'select',SelectViewSet) 8 9 urlpatterns = [ 10 url('', include(router.urls)), 11 ]
测试我们对Web API的第一次尝试
启动Django的开发服务器。
python manage.py runserver
在浏览器中输入 http://127.0.0.1:8000/ 访问测试