Django 进阶 之 Restful框架
一、 什么是Rest
二、 应用示例
1. 先在setting中引入Restful框架
1 INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 'polls', 9 'rest_framework', #引入Restful框架 10 ]
2. 建立系列化文件serializers.py,配置要序列化的model
1 from rest_framework import serializers 2 3 from .models import Poem 4 5 class PoemSerializer(serializers.ModelSerializer): 6 class Meta: 7 model = Poem 8 fields = ['id', 'author', 'title', 'type']
3. 在视图中编写查看model列表的类
1 from rest_framework.views import APIView 2 from rest_framework import status 3 from rest_framework.response import Response 4 from .serializers import PoemSerializer 5 6 class PoemListView(APIView): 7 def get(self, reqeust, format=None): 8 poems = Poem.objects.all() 9 serializer = PoemSerializer(poems, many=True) #manay=True说明返回的是多条数据 10 return Response(serializer.data) 11 12 def post(self, request, format=None): 13 serializer = PoemSerializer(data=request.data, many=True) 14 if serializer.is_valid(): 15 serializer.save() 16 return Response(serializer.data, status=status.HTTP_201_CREATED) 17 else: 18 return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)/polls/views.py
4. 在视图只编写查看model单个对象的方法,使用装饰器来实现
1 from rest_framework import status 2 from rest_framework.response import Response 3 from .serializers import PoemSerializer 4 from rest_framework.decorators import api_view 5 6 @api_view(['GET','PUT','DELETE']) 7 def poem_detail(request, id): 8 try: 9 poem = Poem.objects.get(id=id) 10 except Poem.DoesNotExist: 11 return Response(status=status.HTTP_404_NOT_FOUND) 12 13 if request.method == 'GET': 14 serializer = PoemSerializer(poem) 15 return Response(serializer.data) 16 elif request.method == 'POST': 17 serializer = PoemSerializer(poem, request.data) 18 if serializer.is_valid(): 19 serializer.save() 20 return Response(serializer.data) 21 else: 22 return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 23 elif request.method=='DELETE': 24 poem.delete() 25 return Response(status=status.HTTP_204_NO_CONTENT)/polls/views.py
5. 配置URL路由
1 from django.conf.urls import url 2 from . import views 3 4 urlpatterns = [ 5 url(r'^$', views.home, name='home'), 6 url(r'^poems_res', views.PoemListView.as_view()), 7 url(r'poem_res/(?P<id>\d+)$', view=views.poem_detail), 8 ]/polls/urls.py 优质内容筛选与推荐>>