2018-11-7 18:53:17

等把项目做完再发完整代码和github连接

这里只整理笔记和新学的知识点!

1.url的两种写法

urls.py

from django.conf.urls import url,include

from app01.views import course

urlpatterns = [
# 方式一 这种方法需要用判断
# url(r'^course/$', course.CourseView.as_view()),
# url(r'^course/(?P<pk>\d+)/$', course.CourseView.as_view()), # 方式二 用了请求方式对应方法这个方式
url(r'^course/$', course.CourseView.as_view({'get': 'list'})), url(r'^course/(?P<pk>\d+)/$', course.CourseView.as_view({'get': 'retrieve'})), url(r'^test$', course.test),
]

在第二种传参数的写法,也就是请求方式对应方法名,这种写法类必须继承 ViewSetMixin,因为这个类重写了as_View方法,可以传参数

如下代码

from rest_framework.viewsets import ViewSetMixin, APIView

class CourseView(ViewSetMixin, APIView):
pass

2.在 serializers序例化的时候,一对多和多对多的序例化方式不同

如下代码

from app01 import models
from rest_framework import serializers class CourseDetailSerializer(serializers.ModelSerializer):
"""
课程详细序列化
"""
# one2one/fk/choice
# 跨表取title
title = serializers.CharField(source='course.title')
img = serializers.CharField(source='course.course_img')
level = serializers.CharField(source='course.get_level_display') # m2m 自定义方法 返回所要数据
recommends = serializers.SerializerMethodField()
chapter = serializers.SerializerMethodField() class Meta:
model = models.CourseDetail
fields = ['course', 'title', 'img', 'level', 'slogon', 'why', 'recommends', 'chapter'] def get_recommends(self, obj):
# 获取推荐的所有课程
queryset = obj.recommend_courses.all()
return [{'id': row.id, 'title': row.title} for row in queryset] def get_chapter(self, obj):
# 获取推荐的所有课程
queryset = obj.course.chapter_set.all()
return [{'id': row.id, 'name': row.name} for row in queryset]

3. 关于在modes中choice字段如何获取后面的中文 需要用 get_字段名_display() 这个方法

例:

 level_choices = (
(1,'初级'),
(2,'中级'),
(3,'高级'),
)
level = models.IntegerField(verbose_name='课程难易程度',choices=level_choices,default=1)

序例化代码


from app01 import models
from rest_framework import serializers

class CourseSerializer(serializers.ModelSerializer):
"""
课程序列化
"""
level = serializers.CharField(source='get_level_display')  # 使用了 get_level_display class Meta:
model = models.Course
fields = ['id', 'title', 'course_img', 'level']

vue部分也没啥,等做完项目直接上传github

就这些知识点,附上笔记!

s9day105 

内容回顾:
- restful 规范(10)
- django rest framework框架(10)
- 跨域
- 为什么会有跨域?
- 绕过浏览器同源策略就可以跨域。
- jsonp
动态创建script标签
同源策略会阻止ajax请求;不阻止具有src属性的标签
<script src='xxxx'></script>
- cors
设置响应头 今日内容:
- vue
- api 内容详细:
1. vue
- 课程列表
- 课程详细 - 任务:
- 课程表
id title course_img level(choices)
- 课程详细(one2one 课程 )
id why 推荐课程
- 章节
id name
- 功能:
a. 课程列表显示图片 b. 课程详细显示:
- 为什么要学习这个课程
- 所有推荐课程
- 所有章节 2. api
1. 查询所有的课程
http://127.0.0.1:8000/api/v1/course/
练习:level变中文 2. 查询课程详细
http://127.0.0.1:8000/api/v1/course/1/
- 路由 as_view 是否添加参数,取决于视图继承的类
- 序列化
- depth
- source
例:
title = serializers.CharField(source='course.title')
- 自定义method
例:
recommends = serializers.SerializerMethodField() def get_recommends(self, obj):
# 获取推荐的所有课程
queryset = obj.recommend_courses.all()
return [{'id': row.id, 'title': row.title} for row in queryset] 练习:显示该课程相关的所有章节 this补充:
题目1:
var name = '景女神' function Foo(name,age){
this.name = name;
this.age = age;
this.getName = function(){
console.log(this.name); # 文州 (function(){
console.log(this.name); # 女神
})() }
} obj = new Foo('文州',19)
obj.getName() 题目2:
var name = '景女神' function Foo(name,age){
this.name = name;
this.age = age;
this.getName = function(){
console.log(this.name); # 文州
var that = this
(function(){
console.log(that.name); # 文州
})() }
} obj = new Foo('文州',19) obj.getName() 题目3:
var name = '景女神'
obj = {
name:'文州',
age: 19,
getName:function(){
console.log(this.name); # 文州
var that = this
(function(){
console.log(that.name); # 文州
})()
}
}
obj.getName() 作业:
1. 前后端流程
2. 图片
3. CC视频账号
4. git相关
- 安装git软件
- 注册github账号

11.7luffycity项目(2)的更多相关文章

  1. django之创建第11个项目-页面整合

    目的:将如下众多html页面整合到一个index.html页面中. 百度云盘:django之创建第11个项目-页面整合 用下面的方式实现: <!DOCTYPE html> <head ...

  2. Spring Boot → 11:项目实战-账单管理系统完整版

    Spring Boot → 11:项目实战-账单管理系统完整版

  3. (PMP)第11章-----项目风险管理

    11.1 规划风险管理 输入 工具与技术 输出 1.项目章程 2.项目管理计划 (所有组件) 3.项目文件 (相关方登记册) 4.事业环境因素 5.组织过程资产 1.专家判断 2.数据分析 (相关方分 ...

  4. jdk1.8换成11,启动项目报错java.net.MalformedURLException: unknown protocol: jrt

    jdk11 Information:Internal caches are corrupted or have outdated format, forcing project rebuild: Mo ...

  5. python3.7环境下创建app,运行Django1.11版本项目报错SyntaxError: Generator expression must be parenthesized

    咳咳!!! 今天用命令行创建django项目中的app应用,出现了这样一个错误 这个错误在python3.6版本下安装运行django 1.11版本正常运行,但python3.7版本下运行django ...

  6. 11、项目经理要阅读的书籍 - IT软件人员书籍系列文章

    项目经理是负责软件项目的总体把控的角色.项目经理在项目中是一个管理者的角色,他需要对项目的9大领域进行学习,同时针对项目的范围.进度.沟通和风险进行处理,让项目能够按时保质保量的完成. 项目经理需要学 ...

  7. DDD实战11 在项目中使用JWT的token 进行授权验证

    步骤: 1.首先要在webapi的管道中 使用认证(Authentication) 2.要在webapi的服务中注册验证条件 代码如下: namespace Dealer.WebApi { publi ...

  8. python3.7环境下创建app、运行Django1.11版本项目报错Generator expression must be parenthesized

    有些同学喜欢追求新鲜感~但追求新鲜感终归是要付出一点点代价的 在编程领域有一句至理名言:用东西不要用最新的! 就像每次苹果系统的升级都会有相当一部分用户的手机成砖一样 下面我们就介绍一个因版本升级带来 ...

  9. 让android项目支持boost 支持c++11

    在Application.mk 里增加-D__GLIBC__  让项目支持boost 增加 -std=c++11 让项目支持c++11 (3.x的cocos本身已经支持了的) 看起来这样: APP_S ...

随机推荐

  1. mysql 创建用户命令-grant

    我们在使用mysql的过程中,经常需要对用户授权(添加,修改,删除),在mysql当中有三种方式实现 分别是 INSERT USER表的方法.CREATE USER的方法.GRANT的方法.今天主要看 ...

  2. Linux出现Read-only file system错误的解决方法

    造成这个问题的解决办法大多数是由于非正常关机后导致文件系统受损引起的,在系统重新启动之后,受损分区就会被Linux自己主动挂载为仅仅读.解决办法是通过fsck来修复文件系统,然后重新启动就可以,下面是 ...

  3. 市场风险~VaR的概述

    1.概念理解 VaR的含义:Value at Risk 按字面的解释就是"处于风险状态的价值",可译为受险价值.在险价值.风险价值等. 通常解释为:VaR是在一定置信水平和一定持有 ...

  4. http://www.360doc.com/userhome.aspx?userid=5054188&cid=235

    http://www.360doc.com/userhome.aspx?userid=5054188&cid=235

  5. MySQL的reset master

    删除index文件中列出的所有二进制日志文件,将index文件清空,并创建一个新的二进制日志文件. 使用这个命令要很小心,以免丢失二进制日志文件数据. reset master也会清空gtid_pur ...

  6. CentOS 6.5 x64相关安全,优化配置

    一.安全 1.修改密码长度: [root@CentOS64 ~]# vi /etc/login.defs PASS_MAX_DAYS 99999   //用户的密密码最长使用天数 PASS_MIN_D ...

  7. 开源组件ExcelReport 3.x.x 使用手册(为.netcore而来)

    ExcelReport转眼已经开源4年了,期间有很长时间也停止了对它的维护.18年年末有人联系到我,说“兄弟,ExcelReport不错,但什么时候支持.netcore呢?”.我寥寥的回了几句搪塞的话 ...

  8. ip代理优化

    如何保证可用ip不低于2000个,代理ip池优化策略 第一:获得大量ip: 第二:验证可用ip: 第三:监控可用ip: 第三:保证可用ip不低于3000或者5000: 截图是实时可用ip数量 心得:不 ...

  9. 【原创 Hadoop&Spark 动手实践 10】Spark SQL 程序设计基础与动手实践(下)

    [原创 Hadoop&Spark 动手实践 10]Spark SQL 程序设计基础与动手实践(下) 目标: 1. 深入理解Spark SQL 程序设计的原理 2. 通过简单的命令来验证Spar ...

  10. 《Essential C++》读书笔记 之 目录导航

    <Essential C++>读书笔记 之 目录导航 2014-07-06 第一章:<Essential C++>读书笔记 之 C++编程基础 第二章:<Essentia ...