DRF简单入门(一)

安装配置相关

1、安装

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

2、注册到app

INSTALLED_APPS = (
    ...
    'rest_framework',
)

3、配置可视化api

urlpatterns = [
    ...
    url(r'^api-auth/', include('rest_framework.urls'))
]

 4、简单应用

1、先创建一个模型

class Role(models.Model):
    """
    角色表
    """
    title = models.CharField(max_length=32, verbose_name="角色名称")

    class Meta:
        verbose_name = "角色表"
        verbose_name_plural = "角色表"

    def __str__(self):
        return self.title


class User(models.Model):
    """
    用户表
    """
    id = models.AutoField(primary_key=True)
    username = models.CharField(max_length=32, verbose_name="用户名")
    password = models.CharField(max_length=128, verbose_name="密码")
    email = models.CharField(max_length=32, verbose_name="邮箱")
    roles = models.ManyToManyField(to="Role", blank=True, verbose_name="用户关联的角色")

    class Meta:
        verbose_name = "用户表"
        verbose_name_plural = "用户表"

    def __str__(self):
        return self.username

2、Serializers(序列化器)

序列化数据,在models.py 同级目录下新建一个serializers.py

from rest_framework import serializers

#
HyperlinkedModelSerializer 会自动生成一个 url 字段来表示超链接
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User  
fields = ('url', 'username', 'email', 'roles')
#fields = “all”
class RoleSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Role
        fields = ('title', 'permissions')

3、Views

开始写视图函数

from rest_framework import viewsets
from .serializers import UserSerializer,RoleSerializer

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


class RoleViewSet(viewsets.ModelViewSet):
    """
    允许角色查看或编辑的API路径。
    """
    queryset = Role.objects.all()
    serializer_class = RoleSerializer

3、URLs

配置路由

from rest_framework import routers
from rest_framework.documentation import include_docs_urls
router = routers.DefaultRouter() 
router.register(r
'users', views.UserViewSet)
router.register(r
'roles', views.RoleViewSet)
urlpatterns = [
    path('api/rbac/', include(router.urls)),
path(
'api-auth/', include('rest_framework.urls', namespace='rest_framework')),
path(
'docs/', include_docs_urls(title="rest_frameworkc api")),
]

猜你喜欢

转载自www.cnblogs.com/freely/p/9704312.html
今日推荐