fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络程序设计Python Django Web典型模块开发实战

Python Django Web典型模块开发实战

【腾讯云+/阿里云栖专栏作者力作,帮你成为全栈大神级程序员。图文分与代码实现结合,详解Django Web开发11个典型模块,需求分析、产品设计、业务模式、功能实现、代码优化、设计理念、开发原理】

作者:寇雪松 出版社:机械工业出版社 出版时间:2019年08月 

ISBN: 9787111632795
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €56.99

类别: 程序设计 SKU:5d816fe8b5d8bfc22f310cfa 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111632795

产品特色

内容简介

为了帮助大家成为一名Django全栈开发领域的“大神级”程序员,本书讲解了11个实战项目案例的典型开发模块,便于让大家从项目需求分析、产品设计、业务模式、功能实现、代码优化,以及设计理念和开发原理等角度进行系统学习。本书实用性很强,通过抽丝剥茧的讲解,可以帮助读者稳步提升自己的开发水平。读者只要按照书中的讲解进行学习,就可以完成案例代码的编写,实现案例模块的基本功能,并能通过项目案例开发而夯实Django的基础知识,从而对相关理论知识有更加深入的理解。

本书共12章,涵盖的内容包括从新浪微博聊起多端应用;用Django REST framework实现豆瓣API应用;用Django设计大型电商的类别表;用Django实现百度开发者认证业务模型;Token登录模块开发;实现优酷和爱奇艺会员的VIP模式;违禁词自审查功能模块开发;吾爱破解论坛反爬虫机制分析;跨域问题的解决办法;用Django实现支付功能模块;通过Redis缓存功能解决亿万级别的订单涌进;前后端分离项目上线部署到云服务器上。

本书适合Django自学者和有一定基础的Django开发者阅读,还适合其他领域有Python基础而想转型到Django开发的人员阅读。另外,对于想要成为全栈开发工程师的前后端程序员及Python技术爱好者,本书更是一本不可多得的实战宝典。

作者简介

寇雪松  落忆网络科技有限公司联合创始人/CTO。多年来一直致力于Python全栈开发和爬虫开发等工作,对安卓逆向破解技术有研究。独立与参与开发过多个Django复杂网络系统,是Django REST framework前后端分离技术的开拓者之一。在相关技术论坛中发表了数十篇精品热门博客文章。2018年受邀成为腾讯“云 社区”技术类自媒体专栏作者,并于同年受邀成为阿里“云栖社区”技术类自媒体专栏作者。

目  录
第1章  从新浪微博聊起多端应用 1
1.1  AOP面对切面编程思想 1
1.2  Django的前后端分离 2
1.2.1  什么是API 2
1.2.2  RESTful规范——如何写API 3
1.2.3  Django REST framework简介 4
第2章  用Django REST framework实现豆瓣API应用 6
2.1  豆瓣API功能介绍 6
2.2  Django REST framework序列化 6
2.2.1  Postman的使用 7
2.2.2  用serializers.Serializer方式序列化 7
2.2.3  用serializers.ModelSerializer方式序列化 10
2.3  Django REST framework视图三层封装 13
2.3.1  用mixins.ListModelMixin GenericAPIView的方式实现视图封装 13
2.3.2  用generics.ListAPIView的方式实现视图封装 14
2.3.3  用viewsets Router的方式实现视图封装 15
2.3.4  小结 17
第3章  用Django设计大型电商的类别表 19
3.1  电商类别表的项目功能需求 19
3.1.1  类别表需求分析 19
3.1.2  使用Vue.js在前端开发一个电商导航栏项目demo1 20
3.2  为什么不用传统建表方式建类别表 32
3.2.1  使用PyCharm新建后端演示项目 32
3.2.2  完善demo2的后台逻辑代码 37
3.2.3  前后端项目联合调试 39
3.3  使用Django的model实现类别表建立 44
3.3.1  四表合一 44
3.3.2  数据导入 45
3.3.3  前后端项目联合调试 47
第4章  用Django实现百度开发者认证业务模型 50
4.1  Web 2.0时代,UGC的时代 50
4.1.1  什么是UGC 50
4.1.2  UGC、PGC和OGC三种模式的关系演变 51
4.2  内容生产者认证业务模型是基础 52
4.2.1  内容生产者认证的原理 52
4.2.2  业界主流的两种认证方式 53
4.3  初始化一个项目为功能演示做准备 54
4.3.1  演示认证业务项目的前端逻辑 54
4.3.2  演示认证业务项目的后端逻辑 57
4.4  Django实现通过手机号注册功能 60
4.4.1  业务流程原理及需求分析 60
4.4.2  在demo3中开发注册用户的静态页面 61
4.4.3  编写前端验证用户信息的逻辑代码 63
4.4.4  短信服务商的对接 65
4.4.5  在后端demo4中编写验证码相关逻辑 68
4.4.6  编写发送验证码的前端逻辑代码 72
4.4.7  完成确认注册功能 73
4.5  Django实现邮箱激活功能 75
4.5.1  什么是POP3、SMTP和IMAP 75
4.5.2  开启新浪邮箱的SMTP服务 76
4.5.3  编写邮箱激活功能的前端逻辑代码 76
4.5.4  在前端demo3中增加认证激活代码 79
4.5.5  小结及进一步的设计思路 80
第5章  区块链时代与Token登录 81
5.1  Cookie/Session在前后端分离项目中的局限性 81
5.1.1  什么是Cookie机制 81
5.1.2  Django中使用Cookie 83
5.1.3  Cookie机制的危险与防护 88
5.1.4  什么是Session机制 90
5.1.5  Django中使用Session 92
5.1.6  小结:Cookie/Session的局限性 95
5.2  为什么是Token 95
5.2.1  什么是Token 95
5.2.2  基于区块链技术发展中Token的技术展望 96
5.3  Django实现Token登录的业务模式 97
5.3.1  Django REST framework的Token生成 97
5.3.2  Django REST framework的Token认证 99
5.3.3  Django REST framework的Token的局限性 102
5.3.4  Json Web Token的原理 103
5.3.5  JWT在Django中的应用 104
第6章  实现优酷和爱奇艺会员的VIP模式 109
6.1  为内容付费是趋势 109
6.1.1  网速提升对产品设计的影响 109
6.1.2  内容付费模式介绍 110
6.2  Django权限管理的实现 110
6.2.1  什么是权限 111
6.2.2  新建项目来完成权限管理雏形演示 111
6.2.3  什么是RBAC 118
6.2.4  Django项目中使用RBAC 118
6.2.5  Django基于中间件的权限验证 126
6.3  Django REST framework实现权限管理 130
6.3.1  准备演示权限管理的初始代码 131
6.3.2  为demo6_drf添加身份验证功能 137
6.3.3  为demo6_drf添加权限管理功能 140
6.3.4  验证demo6_drf权限管理的功能 142
第7章  违禁词自审查功能 148
7.1  违禁词自审查功能的重要性 148
7.1.1  违禁词的影响 148
7.1.2  可以避免法律风险 148
7.2  Django REST framework实现模糊搜索功能 149
7.2.1  演示实现模糊搜索的后端逻辑 149
7.2.2  演示实现模糊搜索的前端逻辑 155
7.2.3  开发模糊搜索功能 158
7.3  Django REST framework开发违禁词自审查功能 162
7.3.1  开发违禁词自审查功能后端逻辑 162
7.3.2  创建新用户 165
7.3.3  开发违禁词自审查功能前端逻辑 169
7.3.4  违禁词自审查功能开发 172
第8章  分析吾爱破解论坛反爬虫机制 182
8.1  网络爬虫与反爬虫 182
8.1.1  什么是网络爬虫 182
8.1.2  Robots协议 184
8.1.3  常见的反爬虫手段 184
8.2  吾爱破解论坛怎样反爬虫 190
8.2.1  注册阶段的反爬虫 190
8.2.2  登录阶段的反爬虫 192
8.2.3  搜索阶段的反爬虫 197
8.2.4  怎样彻底阻止网络爬虫 198
8.3  Django REST framework实现频率限制 201
8.3.1  建立演示频率限制功能的项目 201
8.3.2  网页客户端向服务端提交了多少信息 203
8.3.3  频率限制功能开发 205
8.3.4  频率限制该怎样确定 207
第9章  关于跨域问题的解决办法 209
9.1  什么是跨域 209
9.1.1  浏览器的同源策略 209
9.1.2  什么情况下会发生跨域问题 216
9.2  跨域问题的几种解决思路 216
9.2.1  通过jsonp跨域 216
9.2.2  document.domain iframe跨域 217
9.2.3  CORS(跨域资源共享) 217
9.2.4  Nginx代理跨域 218
9.2.5  小结 218
9.3  前端项目解决跨域问题 218
9.3.1  webpack与webpack-simple的区别 218
9.3.2  在前端项目中解决跨域问题 221
9.4  在后端项目中解决跨域问题 224
第10章  用Django实现支付功能 228
10.1  分析目前主流的支付模式 228
10.1.1  支付宝的业务模式 228
10.1.2  生成公钥和私钥 232
10.2  支付宝文档分析 239
10.2.1  请求地址 240
10.2.2  必填的公共参数 240
10.2.3  必填的请求参数 241
10.2.4  签名加密 242
10.3  Django实现支付宝的对接 243
10.3.1  演示对接支付宝的实例项目 243
10.3.2  开发注册和登录功能 246
10.3.3  Django开发支付宝的支付功能 250
第11章  Redis缓存——解决亿万级别的订单涌进 257
11.1  Django实现缓存机制 257
11.1.1  缓存的介绍 257
11.1.2  Django提供的6种缓存方式 257
11.1.3  演示Django缓存机制项目 258
11.1.4  Django开发缓存功能 261
11.1.5  各种缓存配置 262
11.2  Django REST framework实现缓存机制 264
11.2.1  新建演示Django REST framework实现缓存机制的项目 265
11.2.2  Django REST framework开发缓存机制 266
11.2.3  缓存配置使用Redis 269
第12章  前后端分离项目上线部署到云服务器 271
12.1  准备一个前后端分离项目 271
12.1.1  准备一个最基础的前后端分离项目 271
12.1.2  对前后端分离项目进行改造 274
12.2  云服务器的准备 284
12.2.1  购买华为云服务器 284
12.2.2  服务器端安装MySQL5.7 285
12.2.3  压缩项目 288
12.2.4  使用FileZilla将demo12a.zip和demo12b.zip传到服务器端 289
12.3  远程同步数据库 291
12.4  正式开始部署 295
12.4.1  部署前端项目demo12b 295
12.4.2  部署后端项目demo12a 298
……
前  言

Django是基于Python编程语言的三大网站框架之一,是一门需要以实践经验来巩固和提高的技术。对于有一定理论和开发基础的Django学习者来说,想要摆脱重章复沓的学习,从而在Django技术领域中更上一层楼,学习实战项目案例绝对大有裨益。与着重于理论知识的教程不同,本书着重于对实际开发中的解决方案进行分析,从而让Django爱好者在学以致用的过程中走得更加自信,对技术的掌握更加牢靠。

在实际应用中,往往是道理都明白,可真要落实到代码开发上时,就会出现各种沟沟坎坎的情况。例如,一个看似很小的问题挡在了开发者的面前,他们也知道这个问题从理论上说是出在哪个环节,但是具体该怎样解决却无法得知。这种情况下,开发者只能选择去网上搜索相关的解决方案,或者去技术社群中提问,但往往收到的答案大多是以理论为主,并不能解决他们所面临的问题。这不仅会耽误开发者的时间,也会极大地影响他们的心态。

本书抛开空泛的理论,对每一个案例的每一个小功能的实现,都通过详细的图文分析和代码实现娓娓道来。读者跟随着本书进行学习,将会亲身体验一次充实的“知其然并知其所以然”的Django进阶实战之旅。

本书特色

  1. 内容翔实,注重实战,通过十多个项目案例带领读者学习

本书内容涵盖了收费API业务模型的开发、网站防爬虫策略、网站违禁词自查系统的搭建、会员系统的搭建、前后端分离项目的上线部署等大大小小十余个项目模块分析,可以基本解决Django学习者从理论到实践过渡过程中经常会遇到的大部分问题。本书内容非常实用,案例的可操作性很强,是一本可以一边学习一边使用的书,书中的不少案例在实际工作中会经常遇到,读者稍加修改就可以应用到自己的项目中。

  1. 行文诙谐幽默,案例趣味性强,特别适合学习者理解

本书中的每一个案例都是从一个开发者的视角出发对项目进行综合考虑。文中不乏举出了一些诙谐有趣的案例,来形象、生动地阐述一个项目的功能为什么要这样实现,这样实现有什么好处,不这样实现将有可能造成怎样的后果。比如,在分析登录机制的一章中就列举了一个因为登录机制的错误选择而导致验证信息被窃取的例子。通过形象生动的例子,大大降低了读者对新知识的理解难度,让读者可以在流畅的学习过程中更加轻松地获取更多的“干货”。

  1. 细节清晰,逻辑连贯,保证学习者能够毫不费力地掌握

本书重点着墨于“怎样做”,先力求让读者能够跟着每段代码和每个设置,在自己的计算机上一步一步地将书中所介绍的项目完成一遍。这样可以避免理论方面倒背如流,而真正需要动手敲代码实现时却无从下手的尴尬。这也和本书的讲解理念相吻合,即先让读者知道该怎么做,然后在这个基础上进行原理点拨,这样可以大大提升学习效果。

本书内容

第1章  从新浪微博聊起多端应用

假如时至今日,你只会用Django开发PC端的Web项目,还以Python全栈工程师自居的话,相信去哪家公司面试都会被当成入职以后需要再培训很久才能帮上忙的“小白”。一旦在老板心中被贴上了“小白”的标签,再怎么乐观也需要至少半年的时间才能撕掉这个标签吧。这一章我们来聊一聊多端开发。

第2章  用Django REST framework实现豆瓣API应用

几年前,用户想要获取豆瓣数据的API,豆瓣一般都是免费提供的。但是随着近些年数据资产的价值被追捧得越来越高,豆瓣向外提供数据查询的API开始收费,包括电影、图书、音乐等所有类目。本章我们就来开发一套仿豆瓣收费的API项目。

第3章  用Django设计大型电商的类别表

本章我们将和读者一起来构建一个能满足大型电商网站业务需求的类别表。如果问所有使用Django开发的全栈工程师们为什么爱Django,相信会有相当一部分人把Django的ORM摆在所有理由的首位。当某个很“大咖”的编程语言连输出hello world都要新建一个类的时候,利用Django框架都已经可以通过新建一个类直接构建一个高质量的数据表了。本章我们就通过一个电商项目案例来介绍这个话题。

第4章  用Django实现百度开发者认证业务模型

虽然我们经常需要对用户身份进行区分,但又不同于普通用户和付费用户这样的区分方法(当然了,这种区分也会在后面的章节中介绍),而是将用户分为生产者和消费者。本章我们将通过一个类似于百度开发者认证业务的项目模型,让大家能够全面、系统地掌握一个区别于普通网站平台的关键功能的完整搭建流程。

第5章  区块链时代与Token登录

在本章中,我们好好聊一下Django的登录。当然,能够读到本章的读者朋友,想必对于Django框架的了解程度最低也是“登堂入室”了,自然不可能连Django框架自带的登录这么基础的功能都还没掌握(就算还没掌握也不要紧,因为那并不重要)。我们之所以特意以一章的篇幅聊登录,肯定是要聊一些更有趣、又有用的知识,比如Token。

第6章  实现优酷和爱奇艺会员的VIP模式

在本章中,我们来详细地分析一下Django的权限管理,从而可以将读者的权限管理这个知识短板彻底补齐。我们首先会从技术和产品的角度分析权限管理在当前互联网领域的重要程度,然后会新建一个Django项目实例给大家细致入微地讲解权限管理,最后使用Django REST framework的权限管理组件介绍前后端分离项目中如何使用权限管理。

第7章  违禁词自审查功能

常见的违禁词自审查功能分为两种:一种是用户提交想要发表的内容,在经过网站的违禁词自审查检验时,发现内容中包含了一些违禁词,提示用户发表失败,并提示用户内容中有哪些违禁词,要求用户修改内容或者放弃发表,这种违禁词自审查功能大多用于长篇博客、影评、网络小说等篇幅较大的内容审查中;另一种则比较适合评论、发帖等内容篇幅比较短小的应用场景,这种违禁词自审查功能会将检测到的违禁词自动替换为*号。在本章中,我们将会开发一个实际项目,向大家介绍这两种违禁词的自审查功能。

第8章  分析吾爱破解论坛反爬虫机制

近几年,Python语言的人气越来越火,从其他编程语言转Python语言的群体中,因大数据、人工智能和云计算而转学Python的人占了极大一部分;还有一部分人是为了开发爬虫、学习区块链技术、全栈开发和自动化运维等转学Python,其中因开发爬虫而转学Python的群体比例较高。在本章中,我们将会新建一个Django项目,实现非常经典的反爬虫机制——频率限制。

第9章  关于跨域问题的解决办法

一说到跨域,相信只要开发过前后端分离项目的程序员都不会陌生。但是有很大一部分程序员对于跨域问题是知其然而不知其所以然,也就是说会用,但不知道为什么这样用。在本章中,我们来详细地聊一聊跨域这个话题。

第10章  用Django实现支付功能

通过学习前面章节的内容可以看出,开发并运营好一个网站是一笔不小的开销。就算不是以盈利为目的的网站开发者,也有必要学习支付功能的相关知识。在本章中,我们将对国内主流支付平台的业务模式进行分析,并以实际的项目案例演示如何实现支付功能。

第11章  Redis缓存——解决亿万级别的订单涌进

如何通过在开发阶段的设置,让网站服务器在面临巨大压力时能够举重若轻地处理这些数据请求,同时将必要的服务器开销降到最低,这已经成为开发者无法避开的一个问题。在本章中,我们就来解决这个问题,分析目前市场上比较通用的解决方案。

第12章  前后端分离项目上线部署到云服务器

一个项目开发完成后,接下来要做的事就是将项目上线部署到云服务器上。本章我们就来新建一个前后端分离的项目案例,然后将其分别部署到Ubuntu系统上,从而带领大家学习Django项目上线部署到云服务器的相关知识点。

本书配套资源获取方式

本书涉及的源代码文件等配套资料需要读者自行下载。请在华章公司的网站www.hzbook.com上搜索到本书,然后单击“资料下载”按钮即可在本书页面上找到“配书资源”下载链接,单击链接即可下载。

本书读者对象

?    Django自学者;

?    具有一定基础的Django开发者;

?    其他领域具有Python基础想转型Django开发的人员;

?    想要成为全栈开发工程师的前后端程序员;

?    Python语言爱好者;

?    Web开发项目经理;

?    高校相关专业的学生;

?    培训机构的相关学员。

本书作者

本书由寇雪松编写。感谢在本书编写和出版过程中给予笔者大量帮助的各位编辑!

因作者水平所限,加之写作时间有限,书中可能还存在一些疏漏和不足之处,敬请各位读者批评指正。若您在阅读本书时有疑问,请发电子邮件到[email protected]以获取帮助。

媒体评论

在讲解Django开发框架的图书中,本书是我见过的同类图书中*实用的一本,强烈推荐给Django学习的进阶读者阅读。书中系统地介绍了Django项目开发中十多个典型模块的开发过程。这些模块都是Django开发中很常用的模块,读者可以略加修改即可用于自己的项目中,可以大幅度提高开发效率。

——DRF中文社区创始人  七米

本书对于有一定基础,但缺乏实战经验的Django全栈开发工程师来说可谓雪中送炭。书中介绍的十多个Web开发模块都非常典型,也很实用,可以让你通过实际动手的方式提高开发水平,为实际的项目开发打好基础。

——神兔未来科技有限公司创始人  王静逸

本书是一部不可多得的Django开发进阶读物,内容非常实用,可读性很强,强烈推荐给想要提高Django项目开发水平的读者阅读。书中介绍的11个Web项目开发模块都是Django项目开发中通用的典型模块,系统研读这些模块的开发思路,并动手实践这些模块,是提高Django开发水平的不二选择。

——内蒙古立新教育培训学校有限公司CEO  赵立新

免费在线读
第1章  从新浪微博聊起多端应用
当人们听到“新浪”,脑海里第一个浮现的关联词是“新浪微博”,而不是“新浪博客”的时候,互联网已经发展到了多端应用的时代。如果一个互联网公司的业务数据,还只能通过PC端访问,那么可以丝毫不危言耸听地说,这家互联网公司不论经营的业务是什么,都很难在这个时代有所建树。
同样地,假如时至今日,一个互联网开发者只会用Django开发PC端的Web项目,还以Python全栈工程师自居的话,相信他去哪家公司面试,都会被当成入职以后需要再培训很久,才能进入工作的“小白”,一旦在老板心中被贴上“小白”的标签,再怎么乐观,也需要半年的时间来撕掉吧?
其实“小白”跟“老鸟”相差的,不就是“老鸟”比“小白”多了解了一些知识点吗?只不过这些知识点是实际项目中必然会用到,而学校和培训班却很少提及的。一般的程序员,只能在年复一年的工作经验中获得这些知识点。幸运的是,本书里满满的都是这样的知识点,从本章开始,向一只“老鸟”蜕变吧。
1.1  AOP面对切面编程思想
这一节,我们来介绍多端应用的基础编程思想。站在一个项目架构者的角度,对项目的宏观布局做到胸有成竹是一项必备技能。其实多端应用的概念刚开始火起来的时候,Python全栈开发还方兴未艾(至少不像近些年这么热),当时PHP正如日中天,AOP就被广泛应用。想要与资深的Web开发人员侃侃而谈,那么AOP是一个绝佳的谈资。
AOP(Aspect Oriented Programming,面向切面编程),如果要长篇大论地介绍其最早是怎么来的,是通过多少复杂的机制实现的,那将是晦涩难懂的原理,下面举一个例子来跟大家解释什么是AOP。
假如文轩和阿福家里各有一棵苹果树,今天市场上苹果很畅销,文轩和阿福都很开心,因为他们可以摘苹果去卖钱。但是第二天市场上桃子变得畅销了,苹果滞销了,文轩不开心了,因为他只有一颗苹果树,他的苹果树只能结苹果,长不出桃子来。
但是阿福依然很开心,因为他在他的苹果树上嫁接了一根桃枝,当天就长出了很多桃子,又卖了很多钱。第三天市场上橘子变得畅销了,文轩依然不开心,因为他只有苹果;阿福依然很开心,因为他在苹果树上又嫁接了一根橘子枝。第四天阿福在苹果树上嫁接了一根梨枝,第五天嫁接了一根西瓜枝,第六天嫁接了一根巧克力枝……阿福的做法就是AOP,阿福的苹果树就是一个基于面对切面编程思想架构的Web。
AOP在软件架构中的应用非常广泛,是一种如果使用AOP架构最好,如果不使用AOP也行,至多就是耦合度高点儿的应用。但是在Web项目开发中,特别是进入移动互联网时代以来,基于AOP思想,对项目进行前后端分离的基本架构,已经成为了一种必须要做的事情。2012年以前,新浪的CTO如果跟CEO说:“新浪微博只能从PC端访问。”那么并没有什么问题,但是,如果今天,新浪的CTO跟CEO说:“新浪微博只能从PC端访问。”,那还不如直接说“世界那么大,我想去看看。”显得更文艺一点。
2017年12月,胡润研究院发布了《2017胡润大中华区独角兽指数》,榜单上的所有“独角兽”公司,都可以通过PC端和移动端进行业务访问,这个结果其实是可预料的。是的,现在多端应用可以说是绝大部分公司的业务标配,身为一个程序员,必须要有一棵能长巧克力的苹果树。
1.2  Django的前后端分离
相信对Django有所了解的读者都知道,Django的普通项目是基于MVT模式(Model View Template)开发的,而Django的前后端分离项目则是基于MVVM模式(Model View ViewModel)开发的,解耦得更彻底,彻底到前后端分离了,甚至可以说分离成了两个项目。
Django前后端分离项目原理:后端遵循restful规范开发API,与前端进行数据交互,实现多端应用。
1.2.1  什么是API
API作为一个互联网行业的术语,很少被直接翻译过来,因为在中文中并没有一个对应的词汇可以完全表达其含义,如果强行翻译,可以被翻译为数据接口,但显然这个翻译并不准确。举个现实中的例子,比如购房网上面有全国房屋买卖的交易数据,万达公司在需要一些房屋交易数据来作为参考投产项目时,如果自己去做社会调研,费时、费力,非常不合算,所以万达公司每年都要向购房网支付数百万元来购买这些交易数据。大家是否考虑过,这一笔交易是以怎样的方式进行的呢?
所谓的一手交钱一手交货,交钱的流程比较简单,只要万达公司将资金汇给购房网就可以了,但是购房网是怎样将全国房屋买卖的交易数据交给万达公司呢?难道是直接将数据库复制给万达公司一份吗?这显然不可能。购房网是将一些API和权限交给万达公司的技术人员,万达公司的技术人员就可以通过调用这些API获取到他们所需要的交易数据。当然,API是一个广义的概念,除了可以通过调用API获取到数据资源外,还可以通过API提供和获取技术服务,在无数的SDK(软件开发包)中都有所体现。在本章中,我们主要是通过API获取数据。
在业内编写这类API,不论是使用什么编程语言,都需要遵循RESTful规范,当然这是众所周知的事情。
1.2.2  RESTful规范——如何写API
API接口应该如何写?API跟URL有什么不同?这绝对是不可以被忽略的问题,如果API写得乱七八糟,很有可能会失去负责前端开发的同事的信任。将API写得“高大上”,也是一名开发者工匠精神的一种体现。下面来介绍如何写API。
(1)如果是对同一个表进行数据操作(增、删、改、查),应该使用一条API,然后根据method的不同,进行不同的操作。
GET/POST/PUT/DELETE/PATCH
(2)面向资源编程,通过API提交的参数最好是名词,比如name,尽量少用动词。
http://www.abc.com/name
(3)体现版本,在API中加入像v1、v2这样的版本代号:
http://www.abc.com/v1/name
http://www.abc.com/v2/name
(4)体现API,让使用者一眼能看出这是API而不是URL,应该在API中加入提示:
http://www.abc.com/api/v1/name
http://www.abc.com/api/v2/name
(5)使用HTTPS,这一项原本是为了安全考虑,但是随着国内外互联网环境对安全性越来越重视,谷歌浏览器对所有不是HTTPS请求的链接全都会提示用户此链接为不安全链接,腾讯等平台也对小程序等产品强制要求使用HTTPS协议。不过,好在国内许多提供云服务的公司,像腾讯云、阿里云等,都提供免费的SSL证书,供开发者去申请。
https://www.abc.com/api/v1/name
https://www.abc.com/api/v2/name
(6)响应式设置状态码,例如,200和201代表操作成功,403代表权限不够,404代表没有指定资源,500代表运行时发现代码逻辑错误等。
return HttpResponse(‘adgbag’,status=300)
(7)API的参数中加入筛选条件参数,也可以理解为获取资源优先选择GET的方式。
https://www.abc.com/api/v2/name?page=1&size=10
(8)返回值的规范,不同的method操作成功后,后端应该响应的返回值如下:
https://www.abc.com/api/v1/name
不同的提交方式代表对数据进行不同的操作:
? GET:所有列表。
? POST:新增的数据。
https://www.abc.com/api/v1/name/1
? GET:单条数据。
? PUT:更新,返回更新的数据。
? PATCH:局部更新,返回更新的数据。
? DELETE:删除,返回空文档。
(9)返回错误信息,应该加入错误代号code,让用户能直接看出是哪种类型的错误。
ret {
    code:1000,
    data:{
        {‘id’:1,’title’:’lala’}
    }
}
 
(10)返回的详细信息,应该以字典的形式放在data中。
 
ret { 
    code:1000,
    data:{
        {‘id’:1,’title’:’lala’,’detail’:http://www.……}
    }
}
RESTful规范是业内约定俗成的规范,并不是技术上定义的公式,在实际生产使用中,大家还是要根据业务灵活运用。
1.2.3  Django REST framework简介
在Python的Web业内广为流传一句话 “使用Python进行Web全栈开发者必会Django,使用Django开发前后端分离项目者必会Django REST framework”。使用Python进行Web全栈开发的框架,主流的就有4个,但是大家除了使用Django以外,其他的都很少使用。Django本身也拥有一些模块,可以用于完成前后端分离项目的需求,但是大家除了使用Django REST framework以外,也很少使用其他模块。
所以但愿读者在读到此处之前,没有浪费更多的时间去学习那些很少会被用到的知识。Django REST framework之所以能够拥有如此超然的地位,源于其将Python语言特有的一些优势发挥得淋漓尽致,虽然其中也有可以再完善的空间,但可以毫不夸张地说,如果可以将Django REST framework的10个常用组件融会贯通,那么使用Django开发前后端分离的项目中有可能遇到的绝大部分需求,都能得到高效的解决。
Django REST framework的10个常用组件如下:
? 权限组件;
? 认证组件;
? 访问频率限制组件;
? 序列化组件;
? 路由组件;
? 视图组件;
? 分页组件;
? 解析器组件;
? 渲染器组件;
? 版本组件。
Django REST framework官方文档的地址是https://www.django-rest-framework.org/。
新建一个Django项目,命名为book,作为贯穿本书的演示项目。选择PyCharm作为开发工具,在新建目录时,新建App命名为users。
……

抢先评论了 “Python Django Web典型模块开发实战” 取消回复

评论

还没有评论。

相关产品

加入购物车

R 语言技术手册 2E(影印版)

EUR €42.99
加入购物车

码农翻身(好玩有趣的编程知识)

EUR €43.99
评分 5.00 / 5
加入购物车

学习使用C指针(影印版)

EUR €27.99
阅读更多
缺货

Python编程 从入门到实践

EUR €37.99
评分 5.00 / 5

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略