DRF(一):配置、基本应用

本文介绍了DRF(Django REST framework)的配置步骤,包括pip安装和在settings.py中的激活。详细讲解了DRF中的请求和响应,如Django-request和DRF-request的不同,以及DRF-response的使用。接着,文章阐述了如何使用DRF的api_view,处理POST、PUT、PATCH等请求,并探讨了DRF的序列化器在数据接收和返回中的作用。最后,讨论了在实际项目中如何利用DRF完善user模块的增删改查功能。
摘要由CSDN通过智能技术生成

DRF配置步骤
  1. pip安装
djangorestframework
markdown
django-filter
  1. 在settings.py中激活
INSTALLED_APPS = [
	……
    'rest_framework'
]
DRF中的请求和响应
  • Django-request
    类型:WSGIRequest
    方式:GET、POST

  • Django-response
    HttpResponse、render、redirect、JsonResponse

  • DRF-request
    类型:rest_framework.request
    request.POST:POST
    request.data:POST\PUT\PATCH

  • DRF-response
    Response(data)

DRF使用
api_view

@api_view(["GET", "POST", ...])
①限定请求方式;
②改变request类型。

请求request
  1. 接收POST\PUT\PATCH
    params = request.data.dict()

  2. 接收GET
    request.query_params

响应response
from rest_framework.response import Response
from rest_framework import status

def xx:
	query_set = User.objects.all()
	
	# 序列化,结果为字符串
	data = serialize("json", query_set)
	
	# 转化为json
	data = json.loads(data)
	
	return Response(data, status=status.HTTP_200_OK)
  1. Response会直接将json格式的数据进行排版:
    在这里插入图片描述
  2. csrf在drf中失效
  3. 状态码:
    默认200
    状态码的官方解释
响应参数:drf序列化器
  • django中的序列化
    django.forms.model_to_dict(针对模型对象)
    django.core.serializers.serialize(针对queryset)

  • drf中的序列化
    from rest_framework.serializers import Serializer(类似form)
    from rest_framework.serializers import ModelSerializer(类似modelform)

  • Serializer

  1. 在应用下新建serializers.py
from rest_framework import serializer

class UserSerializer(serializers.Serializer):
	# 定义需要接收的数据
    username = serializers.CharField()
    password = serializers.CharField()
    gender = serializers.CharField()
    tel = serializers.CharField()

接收数据时只收到serializer中定义的字段;
不会默认增加pk字段

  1. 用于返回对象
from .serializers import *

# 查询用户
@api_view(["GET"])
def find_user(request):
    
    users = User.objects.all()
    # 默认序列化单个数据,序列化多个数据时设置many=True
    serializer = UserSerializer(users, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

  1. 用于接收参数
# 增加用户
@api_view(["POST"]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值