drf路由分发、解析/渲染模块配置、使用admin、自动序列化配置
辜老板 人气:4目录
- drf路由分发配置
- 解析模块配置
- 渲染模块配置
- 浏览器渲染打开
- 浏览器渲染关闭
- 结论
- drf使用后台admin
- drf序列化模块
- serializers.py:
- views.py:单查群查
- 测试:
- 连表操作
- 配置图片和性别
drf路由分发配置
主路由:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls'))
]
副路由:
from django.conf.urls import url
from . import views
from django.views.static import serve
from d_priect import settings
urlpatterns = [
url(r'users/$',views.UserAPIView.as_view()),
url(r'users/(?P<pk>\d+)/$',views.UserAPIView.as_view()),
# 暴露文件
url(r'^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}),
]
视图:
注意:rest_framework需要先注册,在settings.py中:
INSTALLED_APPS = [
# drf框架的部分功能是依赖于注册后的,所有drf需要在app中注册
'rest_framework',
]
from rest_framework.views import APIView
from rest_framework.response import Response
class UserAPIView(APIView):
def get(self,request,*args,**kwargs):
return Response('get ok')
def post(self,*args,**kwargs):
return Response('post ok')
解析模块配置
from rest_framework.settings import APISettings
渲染模块配置
浏览器渲染打开
别人知道你后台用什么写的,好攻击你
浏览器渲染关闭
效果:数据正常渲染,浏览器只有数据。别人不知道你后台数据怎么写的,不容易攻击你
结论
当项目没上线的时候:一般浏览器渲染打开
当项目上线:为了安全一般把浏览器渲染关闭
drf使用后台admin
现在admin.py种写入:然后一切正常
from django.contrib import admin
from . import models
admin.site.register(models.User)
drf序列化模块
serializers.py:
from rest_framework import serializers
from . import models
class UserModelSerializer(serializers.ModelSerializer):
class Meta:
# 该序列化类是辅助于那个Model类的
model = models.User
fields = ['name', 'age', 'height']
views.py:单查群查
from . import models
from . import serializers
class UserAPIView(APIView):
def get(self, request, *args, **kwargs):
pk = kwargs.get('pk')
if pk: # 单查
# 1)数据库交互拿到资源obj或资源objs
# 2)数据序列化成可以返回给前台的json数据
# 3)将json数据返回给前台
obj = models.User.objects.get(pk=pk)
serializer = serializers.UserModelSerializer(obj,many=False) # # many=True表示:操作多个数据.默认为False
return Response(serializer.data)
else: # 群查
# 1)数据库交互拿到资源obj或资源objs
# 2)数据序列化成可以返回给前台的json数据
# 3)将json数据返回给前台
queryset = models.User.objects.all()
serializer = serializers.UserModelSerializer(queryset, many=True) # many=True表示:操作多个数据
return Response(serializer.data)
测试:
连表操作
配置图片和性别
测试:
加载全部内容