Django写API

在Django中写API需要对内容进行系列化(Serializer),把Serializer化的数据变为JSON格式进行调用。

1、安装 Django rest framework

在命令行下输入
pip install djangorestframework

2、建立api文件

在Django的setting中输入rest_framework进行安装应用

Django写API_第1张图片
应用安装

和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
Django写API_第2张图片
Video

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),

你可能感兴趣的:(Django写API)