Django Rest_framework使用实例

一、修改配置文件

setting.py:

1、添加app。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'corsheaders',
    'api'
]

2、添加rest_framework的全局配置。

REST_FRAMEWORK = {
    # 全局使用的认证类
    "DEFAULT_AUTHENTICATION_CLASSES": ['user.utils.auth.Authtication', ],
    "UNAUTHENTICATED_USER": None,
    "UNAUTHENTICATED_TOKEN": None,
    "DEFAULT_VERSIONING_CLASS": "rest_framework.versioning.URLPathVersioning",
    "DEFAULT_VERSION": '',
    "ALLOWED_VERSIONS": ['v1', 'v2'],
    'PERMISSION_CLASSES': [],
    "VERSION_PARAM": 'version',
    "DEFAULT_RENDERER_CLASSES": [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ]
}

3、配置解决跨域问题。

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
    '*'
)
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'POST',
    'PUT',
)
CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requestd-with',
)

二、定义路由

urls.py:

url(r'^(?P<version>[v1|v2]+)/com/$', views.DepView.as_view({'get': 'list', 'post': 'create'})),
url(r'^(?P<version>[v1|v2]+)/com/(?P<pk>\d+)/$',
        views.DepView.as_view({'get': 'retrieve', 'delete': 'destroy', 'put': 'update', 'patch': 'partial_update'})),

注意:rest url的写法view.视图名称.as_view({'请求方法':'视图中的名称'})

三、定义序列化类对象。

serializer.py:

class ComSerializer(serializers.ModelSerializer):    # 继承ModelSerializer序列化模型类
    class Meta:
        model = models.Company     # 序列化的模型类对象
        # fields = ['id', 'name', 'phone', 'email']      # 定义需要序列的参数(方法一)
        # fields = "__all__"     # 序列化所有参数(方法二)
        exclude=['addr']     # 序列化所有参数,排除本参数(方法三)
        depth = 1    # 关联外键的深度

四、定义分页的配置。

method.py:

class PageNumber(PageNumberPagination):
    page_size = 5     # 分页的条数
    page_size_query_param = 'size'   # 分页的参数命名
    max_page_size = 5
    page_query_param = 'page' # 分页的参数命名

 

五、定义视图函数。

views.py:

class ComView(ModelViewSet):
    """公司视图"""
    queryset = models.Company.objects.all()    # 关联的模型类
    serializer_class = ComSerializer   # 序列化函数
    pagination_class = PageNumber()   # 分页函数

    def list(self, request, *args, **kwargs):
        """
           获取公司列表信息
        """
        # 获取的数据分页处理
        pager_com = self.pagination_class.paginate_queryset(queryset=self.queryset,
                                                            request=request, view=self) 
        # 序列化分页后的数据(若序列化单条数据,many=False)
        ser = self.serializer_class(instance=pager_com, many=True)
        # 返回分页后的序列化对象
        return self.pagination_class.get_paginated_response(ser.data)

、浏览数据。

http://127.0.0.1:8000/user/v1/com/

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值