rest_framework 官方網址http://www.django-rest-framework.org/
備注:django=1.9.8 測試失敗
django=1.11版本成功
**安裝rest_framework **
`pip install djangorestframework`
環境必備庫
~~~
coreapi(1.32.0+) - 模式生成支持。
Markdown(2.1.0+) - Markdown支持可瀏覽的API。
django-filter(1.0.1+) - 過濾支持。
django-crispy-forms - 改進的HTML顯示過濾。
django-guardian(1.1.1+) - 對象級權限支持。
~~~
如果沒有,單獨pip 安裝
sttings文件增加app配置
`'rest_framework',`
model文件
~~~
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class imgs(models.Model):
tetle = models.CharField(max_length=100, verbose_name=u"名稱")
img = models.ImageField(upload_to="tt/%Y/%m", verbose_name=u"圖片")
url = models.URLField(verbose_name=u"地址")
class Meta:
verbose_name = u"圖片測試"
verbose_name_plural = verbose_name
def __str__(self):
return self.tetle
~~~
創建serializers.py 相當于表單
~~~
# _*_ coding=utf-8 _*_
__author__ = 'canmeng'
#相當于表單
from rest_framework import serializers
#from .models import imgs
#第一種形式,自定義屬性
class ImgSerializer(serializers.Serializer):
tetle = serializers.CharField(required=True, max_length=100)
url = serializers.CharField(required=True, max_length=200)
img = serializers.CharField(required=True, max_length=200)
#第二種形式,引入model
#
# class ImgSerModel(serializers.ModelSerializer):
# class Meta:
# model = imgs
# fields = "__all__" 調用所有字段
# fields = ('tetle', 'img')
~~~
創建view
~~~
# -*- coding: utf-8 -*-
#api序列化
#from .serializers import ImgSerModel
from .serializers import ImgSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import imgs
class ImgsList(APIView):
"""
圖片列表
"""
def get(self, request, format=None):
ims = imgs.objects.all()
ims_ser = ImgSerializer(ims, many=True)
return Response(ims_ser.data)
~~~
項目URL 配置
~~~
from rest_framework.documentation import include_docs_urls
from imgs.views import ImgsList
urlpatterns = [
url(r'docs/', include_docs_urls(title="b")),
url(r'api-auth/', include('rest_framework.urls')),
url(r'tp/$', ImgsList.as_view(), name="tp")
]
~~~