一.关于课程数据的返回

在进行前后端分离时,会通过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. 961.重复N次的元素

    在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次. 返回重复了 N 次的那个元素. 示例 1: 输入:[1,2,3,3]输出:3示例 2: 输入:[2,1,2,5, ...

  2. [C13] 应用实例:图片文字识别(Application Example: Photo OCR)

    应用实例:图片文字识别(Application Example: Photo OCR) 问题描述和流程图(Problem Description and Pipeline) 图像文字识别应用所作的事是 ...

  3. 浏览器onbeforeunload

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Educational Codeforces Round 63 (Rated for Div. 2) E 带模高斯消元

    https://codeforces.com/contest/1155/problem/E 题意 \(f(x)=a_0+a_1x+a_2x^2+...+a_kx^k,k \leq 10,0 \leq ...

  5. Unity Glossary

    https://docs.unity3d.com/2018.4/Documentation/Manual/Glossary.html 2D terms 2D Physics terms AI term ...

  6. HikariCP连接池

    1.HikariCP连接池是什么? HikariCP是数据库连接池,而且是号称史上最快的,而且目前来看确实是这样的,SpringBoot2.0也已经采用HikariCP作为默认连接池配置. githu ...

  7. vscode配置python环境-运行调试-windows环境

    官方文件介绍 https://code.visualstudio.com/docs/languages/python 准备: vscode下载安装 python3版本下载(安装时可以选择添加环境变量, ...

  8. 代码问题【TADT//CVPR2019】

    paper:Li X, Ma C, Wu B, et al. Target-Aware Deep Tracking[C]. //CVPR2019 调用adam.m时候报错 结构体内容引用自非结构体数组 ...

  9. Debug 路漫漫-15:Python: NameError:name 'dataset' is not defined

    在调试 <Outer Product-based Neural Collaborative Filtering>论文的源码(https://github.com/duxy-me/ConvN ...

  10. mysql8 安装

    准备工作: 首先安装这些依赖 yum install -y flex yum install gcc gcc-c++ cmake  ncurses ncurses-devel bison libaio ...