Rest Framework教程

本文是关于Django Rest Framework的教程,涵盖了序列化、请求与响应、基于类的视图、认证和权限等方面。通过示例介绍了如何创建serializers、views、URL配置,以及如何实现认证和权限控制。此外,还讨论了ViewSet和路由器的使用,帮助开发者更高效地开发Web API。
摘要由CSDN通过智能技术生成

Home

要求
python版本3.6以上
Django版本 (2.2, 3.0, 3.1, 3.2, 4.0, 4.1)

安装

pip install djangorestframework

快速开始

  • 设置

创建tutorial 的新django项目,然后启动一个名为 quickstart 的新app。

创建一个新项目和一个单个应用
django-admin.py startproject tutorial .  # 注意结尾的'.'符号
cd tutorial
django-admin.py startapp quickstart

然后直接同步数据库, 创建用户

python manage.py migrate
python manage.py createsuperuser
  • Serializers

我们创建一个名为 tutorial/quickstart/serializers.py的文件,来用作我们的数据表示。
作用:
1.将queryset与model实例等进行序列化,转化成json格式,返回给用户(api接口)
2.将post与patch/put的上来的数据进行验证
3.对post与patch/put数据进行处理
简单来说,针对get来说,serializers的作用体现在第一条,但如果是其他请求,serializers能够发挥2,3条的作用

from django.contrib.auth.models import User, Group
from rest_framework import serializers


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('url', 'name')
      
  • Views
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer


class UserViewSet(viewsets.ModelViewSet):
    """
    允许用户查看或编辑的API路径。
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    """
    允许组查看或编辑的API路径。
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
  • URLs
from django.conf.urls import url, include
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

urlpatterns = [
    url(r'^', include(router.urls))]

这样我们就可以进行数据接口访问啦http://127.0.0.1:8000/users/..

序列化

创建django项目,以及配置环境,就不细说了。创建snippetsapp
创建model,执行迁移

from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles

LEXERS = [item for item in get_all_lexers() if item[1]]
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
STYLE_CHOICES = sorted((item, item) for item in get_all_styles())


class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default='')
    code = models.TextField()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值