文档章节

django添加REST_FRAMEWORK 接口浏览

o
 osc_4nmshwhm
发布于 2018/08/07 10:57
字数 322
阅读 14
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1.安装rest_framework

pip install djangorestframework

 2.配置rest_framework

## 将rest_framework加入项目app列表
INSTALLED_APPS = [
     'rest_framework',   
]

## 其他配置
# ======rest api======
REST_FRAMEWORK = {

    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    # 自定义异常处理方法
    'EXCEPTION_HANDLER': 'api_core.exception.api_exception_handler',
    # 'EXCEPTION_HANDLER': 'tennis_api.exception.api_exception_handler',

    # 全局权限控制
    'DEFAULT_PERMISSION_CLASSES': [
        # 'rest_framework.permissions.DjangoObjectPermissions'
        # 'api_core.permission.AppApiPermission',
        'rest_framework.permissions.AllowAny',
        # 'tennis_api.permission.AppApiPermission'
    ],

    # 授权处理
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        # 'rest_framework.authentication.TokenAuthentication',
        'api_core.authentication.ExpiringTokenAuthentication',
        # 'tennis_api.authentication.ExpiringTokenAuthentication',
    ),

    # 全局级别的过滤组件,查找组件,排序组件
    'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.SearchFilter', 'rest_framework.filters.DjangoFilterBackend',
                                'rest_framework.filters.OrderingFilter',),
    # 分页每页大小
    'PAGE_SIZE': 5,
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
    ),
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    )
}

 3.urls.py配置

urlpatterns = [
    # 接口浏览登录
    url(r'^api-auth/', include('rest_framework.urls',
                               namespace='rest_framework')),
]

 4.应用

## 引入rest_framework装饰器
from rest_framework.decorators import api_view
@csrf_exempt
@require_customer_login
@api_view(["GET", "POST", "REQUEST"])
def user_address_list(request):
    """
    获取用户地址列表
    请求参数:
    {
     # 要求用户登录
    }
    返回数据:{
    "code": code,  # 业务状态:1为成功0为失败
    "data": {
    "address_list": [
    {
    "id",
    "is_default",   # 是否默认地址
     "customer_name", # 客户名称
     "phone_no", # 手机号
     "province__province_name", # 省份名称
      "province_id", # 省份ID
      "city__city_name",  # 城市名
      "city_id", # 城市ID
      "district__district_name", # 县乡名
      district_id",  # 县乡ID
      "address" # 用户地址信息
    }],
    for_select: False # 是否下单中
    },
    "message": ""
    }
    """
    curr_customer = get_current_customer()
    if curr_customer is None:
        return {"code": constants.RESULT_NOT_LOGIN, "message": u"您还未登陆"}

    # 地址
    customer_address = CustomerAddress.objects.filter(customer_id=curr_customer.id, available=True,
                                                      deleted=False).values("id", "is_default",
                                                                            "customer_name", "phone_no",
                                                                            "province__province_name",
                                                                            "province_id",
                                                                            "city__city_name", "city_id",
                                                                            "district__district_name",
                                                                            "district_id",
                                                                            "address")
    address_list = []
    if customer_address:
        address_list = list(customer_address)

    data_dict = {'address_list': address_list, "for_select": False}
    if emall_constants.SESSION_VSHOP_ADD_ORDER_INFO in request.session:
        data_dict['for_select'] = True

    return Response({"code": constants.RESULT_SUCCESS, "data": data_dict, "message": ""})

 

下一篇: DRDS
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

物联网开发服务开发虚拟设备需要几步?

云栖号快速入门:【点击查看更多云产品快速入门】 不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 物联网平台设备的正常开发流程是:设备端开发完成,设备上报...

osc_2axit9df
15分钟前
18
0
互联网互联网必看文章墙裂推荐

后端必看文章系列 大型项目架构演进过程及思考的点

code-ortaerc
16分钟前
14
0
ACL2020论文整理 - 知乎

ACL2020录取文章已经放出,链接如下: ACL2020论文集合 www.aclweb.org 为了以后更加方便地阅读论文,也本着一颗开源之心,花一个下午的时间整理了一下相关论文。鉴于本人精力有限,并且也只...

osc_5w65ebjo
16分钟前
0
0
SU(N) Hubbard 模型平均场

osc_31d5oo2i
18分钟前
18
0
Python语言及其应用PDF高清完整版百度云盘免费下载|python基础教程PDF电子书推荐

编辑推荐 本书内容易于理解,而且读起来生动有趣,是编程和Python初学者不可多得的教程。书中首先介绍了Python的基础知识,然后逐渐深入多种主题,结合教程和攻略式风格来讲解Python 3中的概...

osc_nbg2lo7i
19分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部