Django Restframework.1
Posted zbcdamao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django Restframework.1相关的知识,希望对你有一定的参考价值。
官方文档:
中文版文档:
DRF特性:是基于Python打造的实现了RESTApi风格重量级框架
-
-
提供丰富认证
-
支持数据序列化
-
可以轻量嵌入,仅使用fbv
-
强大的社区支持
实现:(需要在工程文件的settings.py文件中进行注册)
INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘App.apps.AppConfig‘, ‘rest_framework‘, #注册rest_framework ‘LearnSerializer‘, ‘LearnRR‘, ]
- Serializer(序列化)
- 创建模型
class Game(models.Model): g_name = models.CharField(max_length=32) g_price = models.FloatField(default=1)
- 创建路由
urlpatterns = [ url(r‘^games/$‘, views.GamesView.as_view()), #CBV模式 ]
- 创建序列化器
- 在项目中创建serializers.py的文件
- 在文件中创建序列化器
from rest_framework import serializers from LearnSerializer.models import Game class GameSerializer(serializers.ModelSerializer): class Meta: model = Game fields = ("id", "g_name", "g_price")
- 创建视图类(get方法和post方法实现的功能)
class GamesView(View): def get(self, request): games = Game.objects.all() serializer = GameSerializer(games, many=True, context=‘request‘: request) return JsonResponse(serializer.data, safe=False) def post(self, request): g_name = request.POST.get("g_name") g_price = request.POST.get("g_price") source_data = "g_name": g_name, "g_price": g_price serializer = GameSerializer(data=source_data) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) return JsonResponse(serializer.errors)
双R
-
-
django中的request只能接收GET,POST参数,PUT,PATCH的参数未做处理,需要自己手动处理
-
DRF中对Request进行重构, request.data
-
data可以接收POST,PUT,PATCH 参数
-
-
-
response
-
Django中TemplateResponse的子类
-
可以根据请求客户端的不同来返回不同的内容
views转换 Wrapping
-
@api_view装饰器
-
直接添加不能使用,需要添加允许请求的方法列表
-
将django的request转换成了restframework中的request
-
原来的HttpResponse可正常兼容
-
使用新的Response可以根据客户端自动转换显示结果
-
-
继承APIView
-
可兼容原有代码
-
APIView继承自View
# 1 @api_view(["GET", "POST", "PUT"]) def index(request): print(request) print(type(request)) data = "啦啦啦德玛西亚" return Response(data) # 2 class HelloView(APIView): def get(self, request): print(request) print(type(request)) return Response("Hello View")
以上是关于Django Restframework.1的主要内容,如果未能解决你的问题,请参考以下文章