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. 避免 Deepin 15.4 系统 界面卡顿、假死等现象:隐藏自带的“任务栏”,安装轻量级的“任务栏tint2”

    使用 Deepin 过程中,发现当点击“任务栏”上面的按钮,尤其是右键单击,选择菜单时,界面很容易卡顿,再也动弹不了. 好吧,,,就不使用自带的“任务栏”了,换成一个轻量级的“任务栏tint2”, 1 ...

  2. Cocos Creator学习笔记

    1.动态加载图片 cc.Class({ extends: cc.Component, properties: { label: { default: null, type: cc.Label }, l ...

  3. Linux系统中如何查找大文件或文件夹的方法

    在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在Linux系统中,如何去搜索一些比较大的文件呢?下面我整理了一下在Linux系统中如何查找大文件或文件 ...

  4. Win10系统的DELL平板如何重装WIN10系统

    首先参考"Win10系统的SurfacePro4如何重装系统-1 SurfacePro专用的PE"这篇文章,做一个WIN10平板专用的PE 然后开机按F2可以进入BIOS设置,如果 ...

  5. 【MySQL】MySQL中查询出数据表中存在重复的值list

    1.目的:查询MySQL数据表中,重复记录的值 2.示例: 3.代码: select serial_num,count(*) as count FROM card_ticket GROUP BY se ...

  6. Git回滚代码到某个commit

    回退命令: $ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前 $ git rese ...

  7. AYUI7 响应式开发

    AYUI7 爱奇艺某页面 响应式DEMO,AY响应式框架在MVC中,使用起来xaml级别,支持 显示器水平/垂直/任意 显示: 大于宽度和大于高度 触发器,小于宽度和小于高度 触发器,每个触发器支持是 ...

  8. 基于Kafka的生产者消费者消息处理本地调试

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/68174111冷血之心的博客) Kafka下载地址:http://d ...

  9. 【OpenFOAM案例】02 自己动手

    前言:很多人说OpenFOAM很难,要啃上很多的理论书籍,什么流体力学.计算流体力学.矩阵理论.线性代数.数值计算.C++程序设计神马的,看看光这一堆书就能吓倒绝大多数的人.其实我们并不一定要从这些基 ...

  10. webpack的配置文件

    1.路径 __dirname是一个全局变量,在项目html和js中没有单独定义,直接写就可以得到项目的根目录的路径 module.exports={ // __dirname是nodejs里的一个全局 ...