下面是针对"Django rest framework基本介绍与代码示例"的详细讲解:
Django rest framework是一个建立在Django框架上的Web API开发工具,它基于大量的RESTful原则来构建API.Django rest framework可以帮助我们快速构建高质量的Web API,它提供了许多功能,比如序列化器(Serializer), API视图(API Views), 认证(Authentication),权限控制(Permission)等.
需要使用Django rest framework的话,我们需要在Django项目中添加依赖.在终端中运行如下命令:
pip install djangorestframework
在项目的设置文件settings.py中,我们需要将rest framework添加到INSTALLED_APPS中:
INSTALLED_APPS = ( 'rest_framework', )
Django的ORM(Object Relational Mapper)能够使我们很方便的操作数据库,同时也支持将操作后的结果进行序列化输出,但是默认的序列化方法不可定制,不满足我们实际的需求.在这种情况下,我们可以借助Django rest framework提供的序列化框架.下面,我们来看一下使用Serializer进行序列化的示例代码.
首先,我们需要定义一个序列化器来描述序列化结构,序列化器需要继承Django rest framework提供的Serializer.
from rest_framework import serializers
from .models import UserInfo
class UserInfoSerializer(serializers.Serializer):
return instance
在定义序列化器的时候,需要为每一个序列化字段定义一个相应的Serializer类型,我们可以使用Serializer的子类可以支持自定义序列化字段的各种属性,例如是否必须存在、最大长度等.在序列化器中,我们还可以定义create()和update()方法,用来在创建和更新实例时进行调用.
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from .models import UserInfo
from .serializers import UserInfoSerializer
@csrf_exempt
def userinfo_list(request):
return JsonResponse(serializer.errors, status=400)
在视图函数中,我们可以根据对应的HTTP方法进行不同的响应.GET方法用于获取所有实例,POST方法用于创建新的实例.
最后,我们需要在urls.py中配置URL映射规则.
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^users/$', views.userinfo_list),
]
除了使用基于函数的视图外,Django rest framework同样提供了基于类的视图.上面介绍的序列化范例实际上已经包含了基于函数的视图的使用方法.基于类的视图可以进一步简化代码量,提高代码的可维护性.此时此刻呢大家和小编一起研究一下使用Generic View进行API操作的示例代码.
为了实现API操作,我们需要首先定义一个模型用来存储数据.今天这一节,我们定义一个名为UserInfo的模型.
from django.db import models
class UserInfo(models.Model):
sex = models.BooleanField()
我们可以复用上面定义的序列化器.
此时此刻呢,我们需要定义一个视图类来操作模型.今天这一节,我们基于类视图,使用Django rest framework提供的generics包中的ListCreateAPIView视图来实现基本的API操作.
from .models import UserInfo
from .serializers import UserInfoSerializer
from rest_framework import generics
class UserInfoList(generics.ListCreateAPIView):
serializer_class = UserInfoSerializer
在视图类中,我们需要指定查询的数据集(queryset),以及使用到的序列化器(serializer_class).
最后,在urls.py中配置URL映射规则.
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^users/(?P[0-9]+)/$', views.UserInfoDetail.as_view()),
]
以上就是土嘎嘎小编为大家整理的Django_rest_framework基本介绍与代码示例相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!