在Django中写API需要对内容进行系列化(Serializer),把Serializer化的数据变为JSON格式进行调用。
1、安装 Django rest framework
在命令行下输入
pip install djangorestframework
2、建立api文件
在Django的setting中输入rest_framework
进行安装应用
和views.py同级目录建立api.py文件,引入相应的rest framework库文件
from website.models import Video #需要建立api的文章模型数据
from rest_framework import serializers #系列化器
from rest_framework.response import Response #构建视图,返回JSON
from rest_framework.decorators import api_view
其中Video字段模型如下:
class Video(models.Model):
title = models.CharField(null=True, blank=True, max_length=300)
content = models.TextField(null=True, blank=True)
url_image = models.URLField(null=True, blank=True)
cover = models.FileField(upload_to='cover_image', null=True)
editors_choice = models.BooleanField(default=False)
owner = models.ForeignKey(to=UserProfile, related_name='videos', default=1)
def __str__(self):
return self.title
3、系列化器
class VideoSerializer(serializers.ModelSerializer):
title = serializers.CharField(min_length=1)
class Meta:
model = Video #代表上面的Video模型数据
fields = '__all__'
depth = 3
其中fields='__all__'
,代表模型中的全部字段系列化,若只想系列表部分内容则使用元组
fields = ('title', 'content',)
表示只系列化title和contnet数据。
4、JSON化数据
建立视图函数
@api_view(['GET', 'POST']) #装饰器
def video(request):
video_list = Video.objects.order_by('-id')
if request.method == 'GET':
serializer = VideoSerializer(video_list, many=True)
return Response(serializer.data)
此处通过装饰器生成json格式数据
5、分配网址
在urls.py中
from website.api import video #引入文件
分配url
url(r'^api/videos/$', video),