ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

django-rest-framework(十一)(路由&渲染器)

2019-04-29 13:48:07  阅读:247  来源: 互联网

标签:渲染器 views url ViewView rest django v1 import view


路由

目前来说,url的写法有三种

from django.conf.urls import url
from api import views
app_name = 'api'

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

现在可以将要请求返回数据的格式写在url中

from django.conf.urls import url
from api import views
app_name = 'api'

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

通过访问url可以获取到json格式的数据

http://127.0.0.1:8000/api/v1/view.json
http://127.0.0.1:8000/api/v1/view/1.json

自动生成路由

urls.py

from django.conf.urls import url, include
from api import views
from rest_framework import routers

routers = routers.DefaultRouter()
routers.register(r'view', views.ViewView)
app_name = 'api'

urlpatterns = [
	# 自动生成上诉后四种路由
    url(r'^(?P<version>[v1|v2]+)/', include(routers.urls))
]

渲染器

内置的渲染器

  • JSONRenderer
  • BrowsableAPIRenderer
  • AdminRenderer
  • TemplateHTMLRenderer
  • HTMLFormRenderer
  • StaticHTMLRenderer
  • DocumentationRenderer

比较常用的有JSONRenderer、BrowsableAPIRenderer、AdminRenderer
view.py

from rest_framework.viewsets import ModelViewSet
from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer, AdminRenderer
from rest_framework.pagination import PageNumberPagination
from api.models import Role
from rest_framework import serializers

class PageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Role
        fields = '__all__'
        
class ViewView(ModelViewSet):
    renderer_classes =[JSONRenderer, BrowsableAPIRenderer, AdminRenderer]
    
    queryset = Role.objects.all()
    serializer_class = PageSerializer
    pagination_class = PageNumberPagination

使用时在url后面加上 .json \ .admin 即可看到想要的数据

渲染器也可进行全局配置中

settings.py

REST_FRAMEWORK = {
    # 渲染器
    'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer']
}

标签:渲染器,views,url,ViewView,rest,django,v1,import,view
来源: https://blog.csdn.net/qq_33458131/article/details/83748375

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有