在URL传递过程,我们只需要调用APIView的as_view()方法,然后URL就会调用业务类对应的HTTP方法,如get,post,put,delete(对应查 增 改 删)方法。
1.使用django自带的view,获取一个Card表里面的卡号信息:
class Card(models.Model):
card_id = models.CharField(max_length=30, verbose_name="卡号", default="")
card_user = models.CharField(max_length=10, verbose_name="姓名", default="")
add_time = models.DateField(auto_now=True, verbose_name="添加时间")
class Meta:
verbose_name_plural = '银行卡账户'
verbose_name = "银行卡账户_基本信息"
def __str__(self):
return self.card_id
from django.http import JsonResponse
from rest_framework import serializers
from django.core import serializers as dj_serializers
from .models import *
from django.views.generic.base import View
import json
class CardListView(View):
'''基于django的view实现获取card列表'''
def get(self, request):
data = {}
cards = Card.objects.all()
data['result'] = json.loads(dj_serializers.serialize("json", cards))
return JsonResponse(data)
2.使用REST framework的APIView
REST framework的APIView继承了django的View类,先序列化Card类,这里的序列化用rest_framework里面的ModelSerializer。
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import serializers
from .models import *
from rest_framework.permissions import IsAuthenticated,AllowAny
from rest_framework.authentication import TokenAuthentication
class CardAPISerializer(serializers.ModelSerializer):
'''序列化数据的类,根据model表来获取字段'''
class Meta:
model = Card
fields = '__all__'
class CardListAPIView(APIView):
'''REST framework的APIView实现获取card列表 '''
permission_classes = (AllowAny,)
def get(self, request, format=None):
Return a list of all users.
cards = Card.objects.all()
serializer = CardAPISerializer(cards, many=True)
return Response(serializer.data)
from apiapp import views
from django.conf.urls import url
urlpatterns = [
url(r'^api/v1/cardlist/$', views.CardListAPIView.as_view()),
restful就是一个接口开发的约定俗成的开发规范。不局限于django或者drf,即便我们不使用drf,其实也能实现符合restful规范的api接口。
同时,drf框架不是restful作者开发出来的!!!
序列化器-Serializer
序列化,序列化器会把模型对象转换成字典,将来提供给视图经过response以后变成json字符串
反序列化,把客户端发送过来的数据,经过视图调用request以后变成python字典,序列化器可以把字典转成模型
反序列化,完成数据校验功能和操作数据库
1、restful简介
在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。
restful是一种后端API接口规范
1.1 http动词
对于资源的具体操作类型,由HTTP动词表示。
常用的HTTP动词有下面四个(括号里是对应的SQL命令):
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
目录一:web开发模式1.1 前后端不分离1.2 前后端分离二:API接口三:接口测试工具:Postman四:RESTful API规范restful十条规范1 数据的安全保障2 接口特征表现3 多数据版本共存4 (重点)数据即是资源,均使用名词(可复数)5 (重点)资源操作由请求方式决定(method)过滤,通过在url上传参的形式传递搜索条件7 响应状态码7.1 正常响应7.2 重定向响应7.3 客户端异常7.4 服务器异常8 错误处理,应返回错误信息,error当做key9 返回结果,针对不同操作,服
我们将创建一个简单的 API,以允许管理员用户查看和编辑系统中的用户和组。官网原文:https://www.django-rest-framework.org/tutorial/quickstart/
文章目录一、项目设置二、项目布局应如下所示:三、序列化程序四、视图五、网址六、分页七、设置八、测试我们的接口
一、项目设置
创建一个名为 的新 Django 项目,然后启动一个名为 的新应用程序。tutorial quickstart
# Create the project directory
REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。
十条RESTful API设计指南
1、数据的安全保障
url一般采用https协议进行传输,可以提高数据交互过程中安全性
2、接口特征表现
使用api关键字标识接口url,代表该url是完成前后台数据交互的
3、多数据版本共存
当一种数据资源有多个版本,应在url中标识数据版本
4、数据即资源
均使用名词复数表示数据资源
5、请求方式决定资源的操作方式
DRF中的Request 与 Response
1. Request
-REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。
-REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Typ...
Rest Framework是前后端分离中用到的一种规范,它与框架本身无关,是一种软件架构风格,全称为Representational State Transfer。 Rest F...
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用?
Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API
为什么要使用Rest Framework
Django REST Framework可以在Dja...