本书共分为四部分。第一部分介绍编码之前的准备工作,包括需求分析、Web开发基础以及选型时Demo的练习。第二部分开始正式实现需求,介绍了环境配置、编码规范以及合理的项目结构划分。通过对Django各部分(Model、Form、admin、View)的介绍和使用,完成了一个基础的博客系统。第三部分在前面的基础上介绍Django第三方插件的使用,通过引入这些插件进一步增强我们的系统。最后一部分也是正式工作中必不可少的部分,包含调试代码、优化系统、压力测试以及自动化等内容。 本书适合Python Web开发人员阅读。 " />
本书被Android开发者广为推荐。全书系统全面、循序渐进地介绍了Android软件开发的必备知识、经验和技巧...
本书内容源自淘宝技术大学的培训实战。由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支...
本书以介绍Go语言特性为主,示例则尽量采用作者开发团队平常的实践,内容涉及内存管理(堆和栈)、错误处理、OOP...
本书讲述了一个64位多核操作系统的自制过程。此操作系统自制过程是先从虚拟平台构筑起一个基础框架,随后再将基础框...
本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、re...
Python具备函数式编程的许多核心特征,因此可以借鉴其他函数式语言的设计模式和编程技术,编写出简洁优雅的代码...
了解数据结构与算法是透彻理解计算机科学的前提。随着Python日益广泛的应用,Python程序员需要实现与传统...
本书主要基于云架构的Python示例来讲解Serverless的概念。Serverless架构的核心思想是函数...
本书介绍了使用Python进行数据分析和高效的机器学习,首先从一节Python速成课开始,然后回顾统计学和概率...
本书致力于帮助Python开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、...
译者评价: 软件开发者对工程环境、对开发工具的追求是不会止步的。随着开发要素的变迁,工具会不断演进、创新,来适应新的需求,解决面临的各类问题。开发者对新工具的挖掘/理解/采纳,也会反复循环。我们肯定得考虑切换工具的成本,但是也不能固步自封,因循守旧。这个就要自行评估和平衡了。…...
![enter image description here][1] 学习编程的路上, 下面的场景你是否似曾相识? ———— 场景一 当初,零编程基础,想做个网站。 听说Python能做网站,而且很屌, 于是我… ...
![enter image description here][1] 胡阳前搜狐资深开发工程师,现任知乎资深开发工程师 2008年开始,他写博客11年了。 仅最近两年内,博客的访问量累计超过600万。 2017年,他发布了《Django企业开发实战》视频课,广受学员好评…...
框架基础和技术选型 上一章中我们对需求进行了评审和分析,最终得到了具体要开发的功能点,以及对模块进行了划分。现在我们需要做的是根据要开发的功能进行框架的选择。 针对不同的场景,选择不同的技术架构,所产生的开发成本和维护成本都不一样。特定场景下合适的技术架构能够让开发人员更快…...
Python2.7 vs Python3.x 选择2和选择3是近几年来比较流行的一个“话题”,当然这个只是在网络某些论坛或者社区里。在真实的环境下没有这么多的纠结。选择目前应用最广泛的,周围人都在用,并且自己团队能够hold住的,就是最合适的选择。对于2和3的差异,其实写起代…...
WSGI——Web框架基础 简介 WSGI,全称是Web Server Gateway Interface(Web服务网关接口)。 这是Python中的定义的一个网关协议,规定了Web Server如何跟应用程序进行交互。Web server可以理解为一个Web应用的容器…...
简单的WSGI application 理解了上面的代码之后,我们继续看看WSGI协议,也就是我们一开头介绍的。WSGI协议分为两部分,其中一部分是Web Server或者Gateway,就像上面的代码一样,监听在某个端口上,接受外部的请求。另外一部分是Web Applica…...
Flask框架 [https://github.com/pallets/flask][1] 上节我们讲了两种提供Web服务的方式,分别是一:直接通过socket来处理http请求; 二:通过实现WSGI Application部分的协议。 基于这两种方式我们完全可以自己写…...
Tornado 框架 [https://github.com/tornadoweb/tornado][1] 印象 在工作中使用Tornado到现在也有5年了。相对于上一节的Flask,我对Tornado非常熟悉。但是如果要总结Tornado的特性的话,那也只是 高性能 。…...
Django框架 [https://www.djangoproject.com/][1] the5fire使用Django的时间比Tornado还久,在我从Java开发转到Python开发时直接是从Java的SSH(Struts、Spring、Hibernate)框架逃离到…...
我的经验,或许对你有用 —胡阳(the5fire) ...
课程目标: 了解正式环境中的Django/Web开发 学习真实项目开发中涉及到的技能 理解Web系统的原理 能够使用Django独立开发项目 ...
👉 相关课程推荐: 《Django企业开发实战》——视频版 原价399,现价359,立省40元 专属学习福利:独家首发Django知识脑图资料 超长课时:2499分钟 永久回看:2年有效期 独创的产品服务体系:不打扰,不建群,学分制,学习专区互学互助。 立即试听:[…...
Model-Field总结 在写完这些Model以及对应的字段之后,你可能会疑惑这些不同的字段分别是意思,以及为什么需要怎么写。 在进行详细的字段介绍之前,先来梳理这样的概念。Django的Model层给我提供了一套ORM(对象关系映射(Object Relational …...
我的经验,或许对你有用 —胡阳(the5fire) ...
课程目标: 了解正式环境中的Django/Web开发 学习真实项目开发中涉及到的技能 理解Web系统的原理 能够使用Django独立开发项目 ...
凡事得有个来由,就像物理中的能量守恒定律一样,各个模块(部门、组)之前相关作用、推动,让这整个公司的业务运作起来。不可能凭空产生能量。做项目开发也是一样,总得有一个需求过来,启动一个项目,或者推动整个项目的进展。这个需求可能是老板提出来的,也可能是产品提出来的,最终到开发组这里…...
这是产品经理跟开发人员交流的必不可少的东西,很多东西如果不落实到文档上,出了问题很难追溯。另外交流基本靠吼的方式也很容易丢失信息。所以无论是什么需求,能落实到文档上的一定要落实。即便是临时需求也要通过邮件的方式沟通。 接下来说博客开发的需求。 博客的需求说明 介绍 博…...
对于有经验的产品经理来说,在做任何需求的时候,都会计划的足够细致,落实到一个功能点。更好的是能够出原型稿。之后可以通过原型来对每一个功能点进行逐一核对。 对技术来说评审的目的有三个 一、明确所有的需求点,避免返工; 二、确认技术可行性,避免延期或者后面再修改需求; 三、确…...
功能分析 上一节我们对需求进行了评审,经过对细节的沟通之后,产品对需求进行了修改和明确。 需求列表 用户端部分 网站需要对SEO友好,具体可参考搜索引擎站长白皮书,另外需要给搜索引擎提供xml格式的sitemap文件。 博客需要提供搜索功能,搜索范围限定在标题,分类,…...
功能模块划分和技术点 从前面的几篇文章,我们已经知道了一个需求经过怎么样的产品跟技术之间的沟通或者PK之后,才能确定下来。当我们有了完整的需求之后,再接下来的一步就是做功能分析和技术选型,以及架构设计。 但是,很重要的一点是,需要再次提醒一下。一定要问清楚后期产品上的计划,…...
框架基础和技术选型 上一章中我们对需求进行了评审和分析,最终得到了具体要开发的功能点,以及对模块进行了划分。现在我们需要做的是根据要开发的功能进行框架的选择。 针对不同的场景,选择不同的技术架构,所产生的开发成本和维护成本都不一样。特定场景下合适的技术架构能够让开发人员更快…...
Python2.7 vs Python3.x 选择2和选择3是近几年来比较流行的一个“话题”,当然这个只是在网络某些论坛或者社区里。在真实的环境下没有这么多的纠结。选择目前应用最广泛的,周围人都在用,并且自己团队能够hold住的,就是最合适的选择。对于2和3的差异,其实写起代…...
WSGI——Web框架基础 简介 WSGI,全称是Web Server Gateway Interface(Web服务网关接口)。 这是Python中的定义的一个网关协议,规定了Web Server如何跟应用程序进行交互。Web server可以理解为一个Web应用的容器…...
简单的WSGI application 理解了上面的代码之后,我们继续看看WSGI协议,也就是我们一开头介绍的。WSGI协议分为两部分,其中一部分是Web Server或者Gateway,就像上面的代码一样,监听在某个端口上,接受外部的请求。另外一部分是Web Applica…...
Flask框架 [https://github.com/pallets/flask][1] 上节我们讲了两种提供Web服务的方式,分别是一:直接通过socket来处理http请求; 二:通过实现WSGI Application部分的协议。 基于这两种方式我们完全可以自己写…...
Tornado 框架 [https://github.com/tornadoweb/tornado][1] 印象 在工作中使用Tornado到现在也有5年了。相对于上一节的Flask,我对Tornado非常熟悉。但是如果要总结Tornado的特性的话,那也只是 高性能 。…...
Django框架 [https://www.djangoproject.com/][1] the5fire使用Django的时间比Tornado还久,在我从Java开发转到Python开发时直接是从Java的SSH(Struts、Spring、Hibernate)框架逃离到…...
Django小试牛刀 前面的课程中,我们经过了需求分析,经过了技术选型,选择了我们匹配我们需求的框架。 在这一章,用我们选出来的框架简单做一个系统出来。在正式开发流程中,我们有可能会在选型的阶段来完成这部分内容。这是在我们对所有要用的框架都不熟悉的情况下。我们需要分别做一个…...
如何阅读Django文档 通过文字的方式来描述似乎不是件容易的事,我尽量通过文字表达清楚。 文档结构 Django是基于MVC模式的框架,虽然也被称为“MTV”的模式,但是大同小异。对我们来说,需要了解的是无论是MVC模式还是MTV模式,甚至是其他的什么模式,都是为了解耦…...
学员管理系统 这一节让我们来快速的过一下Django的各个模块,在上一节内容中,你可能了解了Django所提供的功能,这一节我们来切实体会一下。你最好打开你熟悉的IDE,一起写起来。 需求 一句话就能描述清楚的需求:提供一个学员管理系统,一个前台页面,展示现有学员,并供新…...
学员管理系统- 前台 开发首页 有了上一节的Model和Admin的部分,我们接着来做一个简单的用户提交申请的表单页面。 首先在student/views.py文件中编写下面的代码: # -*- coding: utf-8 -*- from __future__ imp…...
进阶部分 虽然是一个简单的Demo,但是有句老话叫:麻雀虽小五脏俱全,我们也得把常用的功能使用到。所以增加这一部分,包括:Class Base View, Middleware, TestCase这三个部分。 注意,如果你前面的例子没有跑起来,可以先不看这一节,先把前面的代…...
TestCase 单元测试是实际开发中,很重要,但是经常被忽视的部分。原因主要是编写对于Web功能的测试所耗费的时间会高于你开发此功能的时间。因此对于需要快速开发、上线的业务来说,这个项目中关于单页测试的部分很少。 单元测试的主要目的是为了让你的代码更健壮,尤其是在进行重构…...
进入开发 这一部分我们将为正式开发做一些准备。比如环境配置,编码规范,以及一个Django项目的项目结构。有了这个基础之后,我们可以把任务进行划分,不同的成员开发不同层的内容。 ...
编码规范 这是一个老生常谈的问题,但是新手往往意识不到这个问题的重要程度。没有进行过团队合作的人,往往编码没什么风格。因为他没遇到这样的问题。或者他可能有自己的风格,但是对于团队来说,编写的代码应该有一致的风格,否则整个代码看起来会十分凌乱,不同成员不同的编码方式、习惯,让阅…...
相关讲义请查看: 01 | 编码规范 ...
相关讲义请查看: 01 | 编码规范 ...
相关讲义请查看: 01 | 编码规范 ...
虚拟环境 干净,整洁,无副作用的项目本地和线上的运行环境 几种方式: virtualenv project-env 项目目录即虚拟环境 python3.6 -m venv project-env 项目目录即虚拟环境 mkvirtualenv project-env 可以…...
项目结构 原则 根据使用频率以及需要依赖的文件合理的规划项目文件结构,提高开发效率。 结构 project conf fabfile src requirements.txt setup.py others .gitignore 参考 [https://gi…...
Git版本控制 版本控制并不是仅限于源码管理这一领域,因为它的本质就是文件管理,因此你可以通过版块控制,来管理一切基于文件的变更。 在版本管理领域,有很多工具可以使用,拿我自己用来的来说,早期都是在使用svn来做源码管理,到了2011年之后,git盛行,就开始转向使用git…...
git进阶 常用的配置及alias 可以通过git config -l 查看所有的配置,push default是默认配置了 修改已提交的commit gitblame审查代码 远端和本地 git merge/pull request 提交代码 无中间服务器如何提交pull…...
相关讲义请查看: 04-2 | Git版本控制进阶 ...
相关讲义请查看: 04-2 | Git版本控制进阶 ...
相关讲义请查看: 04-2 | Git版本控制进阶 ...
概述 这一章我们先来创建一个github上的项目:typeidea,这是我们整个项目的名称,一个多人的博客系统。 在这一章我们会根据需求完成整个Model层的创建,理解Django中Model部分的知识点。 先实践,后总结。 ...
创建项目及配置 我们先来回顾下之前分析的需求,那份最终整理完的需求文档,现在看了放的有点久了。不过中间经过的这些都是为接下来做铺垫,实际开发中不会有中间这么多的环节,因为这些都是预备知识,你不懂这些,应该是进不了正式的开发团队的。 好了,废话不多说,先来创建项目typeid…...
按照上节课的结构整理完项目之后,我们来创建Model层代码,不过在此之前,我们先来看下之前整理的Model需要的模型和字段: 文章: - id - 标题 - 作者 - 分类(多对一) - 标签(多对多) - 摘要 - 正文 - 状态 - 发布时间 分类: - id … ...
按照上节课的结构整理完项目之后,我们来创建Model层代码,不过在此之前,我们先来看下之前整理的Model需要的模型和字段: 文章: - id - 标题 - 作者 - 分类(多对一) - 标签(多对多) - 摘要 - 正文 - 状态 - 发布时间 分类: - id … ...
按照上节课的结构整理完项目之后,我们来创建Model层代码,不过在此之前,我们先来看下之前整理的Model需要的模型和字段: 文章: - id - 标题 - 作者 - 分类(多对一) - 标签(多对多) - 摘要 - 正文 - 状态 - 发布时间 分类: - id … ...
按照上节课的结构整理完项目之后,我们来创建Model层代码,不过在此之前,我们先来看下之前整理的Model需要的模型和字段: 文章: - id - 标题 - 作者 - 分类(多对一) - 标签(多对多) - 摘要 - 正文 - 状态 - 发布时间 分类: - id … ...
按照上节课的结构整理完项目之后,我们来创建Model层代码,不过在此之前,我们先来看下之前整理的Model需要的模型和字段: 文章: - id - 标题 - 作者 - 分类(多对一) - 标签(多对多) - 摘要 - 正文 - 状态 - 发布时间 分类: - id … ...
Model层- QuerySet 总结 在Django的Model中,QuerySet是一个重要的概念,必须要了解的!我们在创建完Model以及建好数据库表之后,接下来需要做的就是创建Admin界面,还有开发前台页面。 上一节我们对Model中的字段做了详细的了解,也对OR…...
Model-Field总结 在写完这些Model以及对应的字段之后,你可能会疑惑这些不同的字段分别是意思,以及为什么需要怎么写。 在进行详细的字段介绍之前,先来梳理这样的概念。Django的Model层给我提供了一套ORM(对象关系映射(Object Relational …...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
本章课程讲义: Model层- QuerySet 总结 ...
开发管理后台 这一章我们主要使用Django自带的admin来完成管理后台的开发。 admin属于Django的杀手锏了,对于内容管理系统来说,当你有了表,有了Model,就自动有了一套管理后台,还包括权限控制,这简直是不要太爽的操作。当然这得益于Django的诞生环境,也…...
配置Admin页面 基于我们上节课编写完成的Model代码,我们来配置admin的页面。相对于重复编写Model中字段的枯燥,编写admin的代码会比较有趣,因为能直接看到对应的界面展示,也能直接修改页面展示。 废话不多说,我们开始编写admin的代码。 blog 首先…...
定制admin 上一节我们完成了基础的admin代码编写,已经得到了一个基本可用的内容管理系统,这一节我们来说下常用的定制行的操作。让大家有一个初步的认识,后面在实现需求时还会做更多的讲解。 框架为了达到更高的通用性,只会抽象出通用的逻辑。因此有些特性的东西需要我们自己来做…...
刨源码来看上节课的问题 实际项目开发中经常会遇到与期望不符的结果,因此排查问题是必备技能,对于Python来说,看源码也是相对容易的,这一节我们来通过源码看下上节课的问题所在。 ...
编辑页面配置 save_on_top = True fields = ('title', 'category') fields = (('category', 'title'), 'content'…...
自定义form 还是只针对postadmin来增加form, 在blog目录下增加文件(模块)adminforms.py 这里要命名为adminforms而不是forms,只为了跟前台针对用户输入进行处理的form区分开来。里面编写代码,定义form。关于form的作用,我们…...
重写form的clean_status方法 def clean_status(self): if self.cleaned_data['status']: return 1 else: return 3 重写admin的save_model方法 def …...
抽象基础Admin类 这一节我们来整理下admin的所有代码,把演示的代码去掉,按照正式的逻辑来完成代码。 之前我们在每一个admin上都重写了save方法,来做author——也就是当前作者进行处理,这一节我们来做一下抽象,避免重复的代码到处出现。 抽象author基类…...
开发面向用户的界面 这一节我们开始编写面向用户的界面,只会涉及简单的html结构,不会做太多的美化,这一节的目的就是,能够把我们在后台创建的数据,展示到前台即可。 从技术上来讲,这一节将涉及到Django中的Function View和Class Based View的使用…...
第一节 搭建基础结构&展示文章数据 在开发对用户的界面是,我们首先要分析的是,需要有多少种url存在——即多少个页面。然后再来编写view的代码,这样可以更好的处理重复的逻辑。 其次我们要分析的是,页面上需要呈现哪些数据。不同的数据意味着可能用到不同的model或者…...
编写正式的views代码 这里我们先只处理文章相关的数据,其他数据暂时不处理。 配置模板数据 总结 这一节我们通过编写function views代码,把数据从数据库中取出,放到模板中进行展示,下一节我们来补充通用的页面配置,比如分类,标签,最新文章,最热文章等 参考…...
本小节主要以代码演示为主,学习视频即可。 ...
配置页面通用数据 上节课我们把文章相关的数据做了简单处理,这一节我们来把通用的数据都拿出来塞到页面上。 分类信息 我们是把分类作为一个导航来展示给访客/读者的,在分类的设计上,我们也定义了is_nav的字段,作者可以确定哪些分类可以放到导航上。 我们先编写获取分类的代码…...
本小节以看视频为主。 ...
升级至Class Based View 上一节我们完成了数据的展示,虽然整个流程有一些粗糙,但是数据是没问题了。接下来需要做的就就是使用Class Based View进行重构。 之前也讲到过,function view和class based view并没有技术上的高低之…...
理解Class Based View 我们想从文档上来看下Django提供了多少种Class Based View,然后我们尝试来总结下需要这种CBV的场景,以及相对于functin view的优缺点。 View TemplateView DetailView ListV…...
总结一个request到来之后两种view的处理流程 当django接受到一个request请求之后, 请求会先经过middleware的process request,然后会解析url,拿到对应的view(在urls.py中配置好的),调用view。middleware的流…...
引入前端样式框架(Bootstrap) 这一章我们开始引入前端框架,来美化我们的界面。前面章节中我们通过编写后端代码来处理数据,数据之于网站,就相当于灵魂之于人类。而网站的前端就相当于人的形体、外貌。其中HTML是骨架,而css是皮肤,js就是肢体动作,可以用来展示数据,可以…...
Bootstrap做一个简单的页面布局 在正式去改项目代码之前,我们先做一个静态页面,根据我们之前的设计。这也是正式开发中常见的流程——有前端组/部门来做静态页面,后端来套页面。 介绍 我们先来了解下Bootstrap是什么。Bootstrap发展到现在,已经不能够用css…...
美化页面 尽管使用bootstrap,我们可以很快的做出来一个页面。但是我们需要意识到的一点是,css、html和bootstrap的关系,就像是Python和Django的关系一样。 简单使用Bootstrap和Django,都没有问题。如果想要深入,那前提是必须要掌握好…...
本小节以视频课为主要学习内容,无参考资料。 ...
本小节以视频课为主要学习内容,无参考资料。 ...
配置静态资源 在前面的章节我们,我们是把css直接放到html文件中编写,css的依赖直接使用的是网上的cdn资源。这节课我们需要把css拆分出来,成为单独的css文件,通过link标签加载。 拆分的原因 一般情况下来说,css样式直接写到html中没什么问题,样式展示上…...
完成博客系统 上一章中我们完成了页面样式的配置,让我们之前简陋的页面变得漂亮了些。我们也通过修改默认的Django的模板也静态资源配置,让我们的博客系统可以支持多套模板。 从界面上看,到目前为止我们有了以下页面: 首页 分类列表页 标签列表页 文章正文页 这离我们的…...
本小节以视频课为主要学习内容,无参考资料。 ...
本小节以视频课为主要学习内容,无参考资料。 ...
本小节以视频课为主要学习内容,无参考资料。 ...
增加评论模块 评论提交的方式 js异步提交数据 当页提交 单独页面提交 优缺点 修改模型 post --> target 兼容多种页面 migrations的作用和意义 抽象出评论模块组件和mixin 作业 通过自定义tag实现评论模块的组件化 参…...
增加评论模块 评论提交的方式 js异步提交数据 当页提交 单独页面提交 优缺点 修改模型 post --> target 兼容多种页面 migrations的作用和意义 抽象出评论模块组件和mixin 作业 通过自定义tag实现评论模块的组件化 参…...
本小节以视频课为主要学习内容,无参考资料。 ...
配置markdown编写文章的支持 评论结果处理 增加是否使用markdown的选项 非markdown情况处理换行符 markdown使用配置 参考: [https://github.com/google/code-prettify/blob/master/doc…...
配置markdown编写文章的支持 评论结果处理 增加是否使用markdown的选项 非markdown情况处理换行符 markdown使用配置 参考: [https://github.com/google/code-prettify/blob/master/doc…...
增加访问统计 统计的几种方式: 基于当次访问实时处理 基于当次访问延迟处理 - celery js 放到页面来统计或者img标签 分析nginx日志 增加文章访问统计 uv 判断的几种方式: redis/共享内存的方式:判断用户是否在多长时间内访问过 浏览器端记…...
本小节以视频课为主要学习内容,无参考资料。 ...
本小节以视频课为主要学习内容,无参考资料。 ...
使用xadmin增强管理后台 admin其实一直是Django的杀手锏,试想一下,你需要做一个内容管理系统,还需要带基础的权限控制,你用一个微型框架,可能需要花你一两天的时间,并且扩展性和可维护性基本上不会考虑。而Django在你建立好Model之后,提供了开箱即用的admi…...
xadmin 介绍 xadmin是国人创建的一个开源项目,作者差沙(https://github.com/sshwsfc )。这个框架(django 插件)的口号是:Drop-in replacement of Django admin comes with lots of …...
替换admin为xadmin 从github安装: pip install git+https://github.com/sshwsfc/xadmin。 admin --> adminx 两个接口 get_queryset(self, request) --&g…...
本小节以视频课为主要学习内容,无参考资料。 ...
使用autocomplete优化性能 之前也到过这一点,无论是django自带的admin还是xadmin,对于外键或者多对多字段的处理都比较粗暴,直接会加载到页面上,生成一个select标签,当关联数据过大时会有很大的问题。 试想一下,当你的外键或者多对多字段有几万条数据…...
引入django-ckeditor 对于内容型后台来说,输入内容是最高频的操作,因此需要能有一个更好的编辑器来替代我们之前简陋的Textarea。这类编辑器被称为富文本编辑器,或者也叫所见即所得编辑器。 同类的插件还有百度出品的ueditor,也有对应的django封装:d…...
上传图片配置 首先还是需要配置INSTALLED_APPS: 'ckeditor_uploader', 然后需要配置之前我们改过的content的widget为from ckeditor_uploader.widgets import CKEditorU…...
本小节以视频课为主要学习内容,无参考资料。 ...
自定义存储以及水印 上面的逻辑中没有介绍存储部分的逻辑,Django提供的默认的存储方式是文件存储。但是我们可以根据需求进行定制,要定制自己的Storage也很简单,只需要继承django.core.files.storage.Storage,然后实现几个接口即可。主要的接口…...
Django-REST-Framework fix include的问题,django是支持include的 ckeditor url修改为: url(r'^ckeditor/', include('ckeditor_uploader.urls&#…...
rest framework 相对于前面说到的xadmin插件,djangorestframework已经十分成熟稳定,可以放心的推荐到生产环境中,但是还是前面内容中提到过的一个问题,通用的东西势必会带来性能损耗,所以能不能上上产环境需要当局者(项目负责人)仔细权衡才行。 …...
接口需求 首先还是需要说下我们的需求,我们需要配置一套restful接口,输出所有的文章,功能跟web系统提供的类似,包含: 最新文章列表 分类列表 根据分类获取文章 标签列表 根据标签获取文章 都是只读的功能。这样的需求在实际的项目开发中很常见。当你开发了一套web…...
完成所有的api配置 区分list和detail 方法内部指定serializer_class def retrieve(self, request, *args, **kwargs): self.serializer_class = PostDetailSerializ…...
调试和优化 调试和优化是无处不在的,并不是说一定是在某个阶段才需要做。有句话叫做:代码不是写出来的,而是调试出来的。这句话很有道理。 首先来说调试和优化的目的。调试是为了实现需求,或者为了优化程序执行时间而进行的不断的尝试,而优化的目的除了减少程序执行时间外,还有一点很重要…...
常用的调试和调优手段 我们在前面章节中的代码编程过程中,其实也不断的在调试和优化代码,无论是优化queryset还是进行函数或者类的抽象。 一般情况下我们有这么集中调试的方法。 调试手段 print大法 这个是最简单,最直观的方法,新手上来就会用。通过print来打印…...
调优手段 上面是调试的方法,这里介绍调优的方法。 纯手工的timer 跟上面的print一样,这也是最为直白的探测程序执行时间的方法,再要执行函数的前后增加 start = time.time() 和print(time.time() - start)就可以获得到程序的执…...
使用django-debug-toolbar优化 安装 pip install django-debug-toolbar 配置develop环境 INSTALLED_APPS += [ 'debug_toolbar', ] MIDDLEWARE +=…...
配置MySQL和Cache 这一章我们来准备正式环境的配置,配置mysql和cache ...
配置Mysql 这一节我们可以见证框架的好处,或者说ORM框架的好处。我们在做软件开发中,分层是十分常见的设计方案。分层的目的就是为了解耦,让两个本来完全相关的东西,通过中间加那么一层,从而隔离开。这样的好处就是相互变化后不会相互影响。 比如这里我们把sqlite换成mys…...
Cache 首先我们得了解下什么是cache, 为什么要使用cache,然后再去了解django中的cache的问题 什么是cache cache = {} def query(sql): return cursor.exe_command(sql) 作业 **写一…...
django中的cache配置 在django中可以配置多种cache源,就像是上节配置数据库一样。 redis,文件,mysql,内存都可以。 应用场景和缓存的粒度 不同的场景使用不同的缓存,配置不同的粒度。千万不要以为缓存一定能够优化你的访问,一定要先知道项目的业务…...
上线前的准备 在上一章节中我们已经开始为上线做准备了,每次上线我们都需要准备一个清单,需要规划下部署结构,以及监控方案。 项目部署方案 首先我们需要搞明白的一件事就是,我们平时编写的代码是怎么着最终能为互联网用户提供服务的。这个过程其实就是软件的部署。 ...
你的代码如何为提供提供服务 也就是如何部署你的代码到线上,有几种方式,首先理解基础逻辑,打包,分发。 tar包 scp,最不济用QQ传(low...) gitlab --》 git pulll pypi docker 分发源 目标服务器 http代理 部署结构 ...
部署准备 上一节我们介绍了软件(或者我们称作源代码)分发的流程。这一节我们使用官方的pypi的方式进行打包,首先我们需要先配置下setup.py文件,这个是打包的分发的前提。 配置项目的setup.py coding:utf-8 from setuptools impor…...
配置pypi server 直接安装即可: pip install pypi-server 启动: pypi-server -p 8080 -P /opt/mypypi/.htaccess /opt/mypypi/packages .htaccess: yum …...
编写自动部署脚本 fabric是个利器 首先,我们需要明确部署的逻辑是什么,然后才能用fabric自动处理。 创建虚拟环境 激活虚拟环境 安装项目包 上传supervisord.conf 启动supervisord ansible && salt …...
本小节以视频课为主要学习内容,无参考资料。 ...
监控准备 什么,线上挂了你竟然不知道?! sentry 日志 --> ELK --> Elasticsearch, Logstash, Kibana nginx日志分析 status code, 访问量,后端耗时 部署sentry sentry是用来及…...
来,试试你的系统能抗多少量 在介绍工具之前我们先要了解下压测的目的,在介绍压测的目的之前我们先来考虑一个问题。那就是你的网站或者你的接口需要承受多大压力,或者说一天能承载多少用户的访问。 我们可以先从用户端计算一下,如果一个网站,每天有10万个活跃用户,每个用户每次会访问平…...
迁移到Python3 [https://pythonclock.org/][1] 这是一个生态问题,我们私底下可以研究和使用最新的技术,但是生产环境上一定要稳定。 就像我在知乎上的回答(欢迎去评论)如何看待 Instagram 将所有Web 后端迁移到 Python 3.…...
Python2 vs Python3 总结几个主要的差别: 第三方库,有些库依然没有支持到Python3,比如说Supervisord 参考: Python3 wall这是决定是否迁移的一个很大的因素 内部库的变化: [Python3新特性][1] 基础编码的变化:…...
迁移到Python3 https://docs.python.org/3/howto/pyporting.html ...
Django2.0 - Python2时代的逝去 ...
升级到Django2.0 - 多么轻松 相对于Django1.11,Django2.0的上层接口变化并没那么大,依然是Django一贯的各一个版本淘汰一些接口。 因为上节课我们已经升级到Python3了,因此对于升级Django2.0来说,只需要做些许改动即可。 Djan…...
升级到Django2.0 - 多么轻松 相对于Django1.11,Django2.0的上层接口变化并没那么大,依然是Django一贯的各一个版本淘汰一些接口。 因为上节课我们已经升级到Python3了,因此对于升级Django2.0来说,只需要做些许改动即可。 Djan…...
我们通过一个脑图来梳理下我们这套课程下来一共涉及到哪些内容 ...
最后但并未结束 虽然是最后一节课,但这并不意味着这套课程结束了。课程的时间有限,不能把所有的问题都讲到,正所谓:一千个业务类型就有一千种Django的用法,以及周边库的使用。 所以作为本次课程的购买者,你可以根据你的实际使用场景提出想要更多了解哪方面内容。我会根据大家反馈,…...
TODO:后续内容 根据读者反馈更新视频内容 部署到vps上 优化系统结构,代码 增加评论验证码 ckeditor增加代码支持 增加一套主题 去掉autocomplete light 在课程下留言,根据留言多少可以规划后面的内容 最后致谢! 欢迎评价 &&a…...
部分代码在本书草稿的仓库中,可以查看:https://github.com/the5fire/django-practice-book