一.关于课程数据的返回

在进行前后端分离时,会通过def 进行前后端传值,

本质上遵循rest 网址规范  增删改查查 get,post,put,del get(\d+)

1.在从数据库获取数据后,进行def 发送ajax数据,

通过from rest_framework import serializers

快速获取数据,在 class CourseSerializer(serializers.ModelSerializer)中

level = serializers.CharField(source="get_level_display")为获取的一对多的关联数据库的具体字段,不加source会直接显示_id

在进行choice字段时,为了显示文字,采用
level = serializers.CharField(source="course.get_level_display")

在进行多对多字段时,需要自定义方法,遵循

recommend_coursesinfo = serializers.SerializerMethodField()
通过循环,所关联的全部字段,打印出要获取的值,注意,当字段函数与返回值同名时,会覆盖
 from django.shortcuts import render
from rest_framework import serializers from app01.models import * class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = Course
fields = "__all__" level = serializers.CharField(source="get_level_display")
coursedetail_id = serializers.CharField(source="coursedetail.pk") class CourseDetailSerializer(serializers.ModelSerializer):
class Meta:
model = CourseDetail
fields = "__all__" name = serializers.CharField(source="course.name")
prices = serializers.SerializerMethodField()
brief = serializers.CharField(source="course.brief")
study_all_time = serializers.StringRelatedField(source='hours')
level = serializers.CharField(source="course.get_level_display")
teacher = serializers.SerializerMethodField()
is_online = serializers.CharField(source="course.get_status_display")
recommend_coursesinfo = serializers.SerializerMethodField() def get_prices(self,instance):
return [{"price": obj.price,
"valid_period": obj.valid_period,
"valid_period_text": obj.get_valid_period_display(),
"id": obj.pk,
}for obj in instance.course.price_policy.all()] def get_teacher(self, instance):
return [{"name": obj.name,
"image": obj.image}for obj in instance.teachers.all()] def get_recommend_coursesinfo(self, instance):
return [{"name": obj.name,
"pk": obj.pk} for obj in instance.recommend_courses.all()]

serializers

并且返回的数据需要与前端vue匹配,跨

 from django.shortcuts import render

 from app01 import models
from app01.utils.auth import LoginAuth from rest_framework.response import Response
from rest_framework.views import APIView from serializer.views import CourseSerializer, CourseDetailSerializer class CourseViews(APIView):
authentication_classes = [LoginAuth] def get(self, request):
course = models.Course.objects.all()
data = CourseSerializer(course, many=True)
res = {"error_no": 0, "data": data.data}
return Response(res) class CourseDetailViews(APIView,): authentication_classes = [LoginAuth] def get(self, request, pk):
coursedetail = models.CourseDetail.objects.get(pk=pk)
data = CourseDetailSerializer(coursedetail, many=False)
res = {"error_no": 0, "data": data.data}
return Response(res)

course

其他详见

lf 前后端分离 (2) 课程数据获取,Serializer的返回的更多相关文章

  1. 七:Spring Security 前后端分离登录,非法请求直接返回 JSON

    Spring Security 前后端分离登录,非法请求直接返回 JSON 解决方案 在 Spring Security 中未获认证的请求默认会重定向到登录页,但是在前后端分离的登录中,这个默认行为则 ...

  2. Spring Security 前后端分离登录,非法请求直接返回 JSON

    hello 各位小伙伴,国庆节终于过完啦,松哥也回来啦,今天开始咱们继续发干货! 关于 Spring Security,松哥之前发过多篇文章和大家聊聊这个安全框架的使用: 手把手带你入门 Spring ...

  3. lf 前后端分离 (6) 支付

    支付 import datetime from django.core.exceptions import ObjectDoesNotExist from rest_framework.views i ...

  4. lf 前后端分离 (5) 优惠券

    关于优惠券 优惠券主要通过前端传回来的course_id_list 创建数据结构 首先清空操作,将所有的优惠券清空, 并将所有优惠劵放到redis中的过程 import datetime import ...

  5. lf 前后端分离 (4) 价格策略

    一.价格策略 价格策略就是通过前端发送要购买的课程以及价格策略来找出表关联的字段返回客户端 通过contenttype 属性 找到课程所有的价格策略 for prcie_policy in cours ...

  6. lf 前后端分离 (1) auth,token认证

    一.关于登录验证 用户在登录的时候会通过验证以及滑动解锁,注意的是需要后端if verify(request.data): 来判断是否发送了那三个验证数据 通过 random_str=str(uuid ...

  7. lf 前后端分离 (3) 中间建跨域

    一.关于中间建跨域 为了减少跨域代码冗余,采用中间件 from django.utils.deprecation import MiddlewareMixin class CorsMiddleware ...

  8. netcore3.1 + vue (前后端分离)生成PDF(多pdf合并)返回前端打印

    1.使用Adobe Acrobat XI Pro编辑pdf模板 2.公共类代码 3.service层调用 4.Controller层 5.前端(Vue) 因为print.js不支持宋体,所以打算用后台 ...

  9. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

    代码已上传Github+Gitee,文末有地址 上回<从壹开始前后端分离[ .NET Core2.0 Api + Vue 2.0 + AOP + 分布式]框架之九 || 依赖注入IoC学习 + ...

随机推荐

  1. 字典与json转化

    json.dumps(字典)  #转成json格式 json.loads(json格式) #转成字典格式

  2. Python基础之猜数游戏

    例题一:猜数游戏.在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”:小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“预测N次,你猜 ...

  3. leetcode279. 完全平方数

    给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12输出: 3 解释: 12 = ...

  4. Springboot使用ehcache缓存

    本文部分步骤继承于springboot使用cache缓存,如果有不清楚的,请移驾springboot使用cache缓存 ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java ...

  5. Go 中 ORM 的 Repository(仓储)模式

    ORM 在业务开发中一直扮演着亦正亦邪的角色.很多人赞颂 ORM,认为 ORM 与面向对象的契合度让代码简洁有道.但是不少人厌恶它,因为 ORM 隐藏了太多的细节,埋下了超多的隐患.在 Go 中,我们 ...

  6. Spring的工具类StringUtils使用

    我们经常会对字符串进行操作,spring已经实现了常用的处理功能.我们可以使用org.springframework.util.StringUtils 工具类帮我们处理字符串. 工具类整理如下:   ...

  7. 大话设计模式Python实现-状态模式

    状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 下面是一个状态模式的demo: #!/usr/bin/env python # -*- ...

  8. FaaS(函数即服务) + BaaS(后台即服务)

    作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 “Serverless” 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverless 把前端开发体 ...

  9. JeeSite | 数据权限应用

    中午吃饭时看了一下陆毅版的<三国>,刚好看的是蜀军缺粮,诸葛亮让王平去劫司马懿的粮.司马懿看蜀军用木牛流马运量很方便,就抢了蜀军的木牛流马仿制了一批,结果司马懿用它运粮时,被王平冒充司马懿 ...

  10. vuex 源码解析(三) getter属性详解

    有时候我们需要从store中的state中派生出一些状态,例如: <div id="app"> <p>{{reverseMessage}}</p> ...