Python新手使用Django架站的16堂课图书
人气:44

Python新手使用Django架站的16堂课

深入分析Django的MVC/MTV架构3.多个实用的网站开发范例,即学即用到个人网站。从设计、规划到实践,16堂课使你轻松成为网络架站高手
  • 所属分类:图书 >计算机/网络>程序设计>其他  
  • 作者:[何敏煌]
  • 产品参数:
  • 丛书名:--
  • 国际刊号:9787302467410
  • 出版社:清华大学出版社
  • 出版时间:2017-04
  • 印刷时间:2017-03-01
  • 版次:1
  • 开本:16开
  • 页数:--
  • 纸张:胶版纸
  • 包装:平装-胶订
  • 套装:

内容简介

Python是目前非常受欢迎的程序设计语言,本书通过对Python语言使用多的Django Web Framework的介绍,让读者可以轻松制作出全功能的动态网站。 本书分4部分,以16堂课来介绍Python新手使用Django架站的要点。部分(第1~3堂)以一个小型的个人博客网站为主轴,介绍如何快速建立一个实用的Django网站;第二部分(第4~7堂)是Django架构深入剖析,详细分析Django的MVC/MTV架构;第三部分(第8~11堂)为实用网站开发技巧;第四部分(第12~16堂)为实用网站开发教学,从设计、规划到实践,逐步指导读者在自己的主机环境下构建出有趣实用的内容。 本书既可作为希望快速上手Python Django的初学者的参考书籍,也可作为Python培训学校在Python Django方面的培训教程。

编辑推荐

本书免费赠送范例网站的源码和网站文件夹结构及其文件,下载地址:pan.baidu.com/s/1pLIuFXp(注意区分数字和英文字母大小写)1.详细的步骤教学,按图操作,快速上手2.深入分析Django的MVC/MTV架构3.多个实用的网站开发范例,即学即用到个人网站4.从设计、规划到实践,16堂课使你轻松成为网络架站高手

作者简介

何敏煌,中国台湾交通大学信息科学所博士。台湾畅销书作者.

目录

目 录

第1堂 网站开发环境的建立 1

1.1 网站的基础知识 1

1.1.1 网站的运行流程 1

1.1.2 Python/Django扮演的角色 2

1.1.3 使用Python/Django建立网站的优势 3

1.2 建立网站开发流程 3

1.2.1 开发流程简介 4

1.2.2 在Windows中建立Linux虚拟机 5

1.2.3 在Mac OS中安装Linux虚拟机 11

1.2.4 在Linux虚拟机中创建Python Django开发环境 17

1.2.5 设置SSH、PuTTY以及FTP服务器 18

1.2.6 安装Notepad 程序编辑器 22

1.3 活用版本控制系统 26

1.3.1 版本控制系统Git简介 26

1.3.2 申请Bitbucket账号 26

1.3.3 在虚拟机中连接Bitbucket 29

1.3.4 在不同的计算机之间开发同一个网站 31

1.4 其他网站项目开发环境的安装建议 32

1.4.1 在Windows 10中创建开发环境 32

1.4.2 在Mac OS中创建开发环境 35

1.4.3 在Cloud9中创建开发环境 37

1.4.4 在DigitalOcean VPS中创建开发环境 39

1.5 习题 40

第2堂 Django网站快速入门 41

2.1 个人博客网站规划 41

2.1.1 博客网站的需求与规划 41

2.1.2 产生及时个网站框架 41

2.1.3 Django文件夹与文件解析 44

2.2 创建博客数据表 46

2.2.1 数据库与Django的关系 46

2.2.2 定义数据模型 47

2.2.3 启动admin管理界面 48

2.2.4 读取数据库中的内容 52

2.3 网址对应与页面输出 55

2.3.1 创建网页输出模板template 55

2.3.2 网址对应urls.py 60

2.3.3 共享模板的使用 62

2.4 高级网站功能的运用 65

2.4.1 JavaScript以及CSS文件的引用 65

2.4.2 图像文件的应用 69

2.4.3 在主网页显示文章摘要 71

2.4.4 博客文章的HTML内容处理 73

2.4.5 Markdown语句解析与应用 75

2.5 习题 77

第3堂 让网站上线 78

3.1 在DigitalOcean上部署 78

3.1.1 申请账号与创建虚拟主机 78

3.1.2 安装Apache网页服务器及Django执行环境 82

3.1.3 修改settings.py、000-default.conf等相关设置 83

3.1.4 创建域名以及多平台设置 86

3.2 在Heroku上部署 89

3.2.1 Heroku账号申请与环境设置 89

3.2.2 修改网站的相关设置 91

3.2.3 上传网站到Heroku主机 92

3.2.4 Heroku主机的操作 96

3.3 在Google Cloud Platform上部署 97

3.3.1 Google Cloud Platform的介绍 98

3.3.2 Google Computing的启用与设置 101

3.3.3 Google App Engine的说明与设置 104

3.4 习题 111

第4堂 深入了解Django的MVC架构 112

4.1 Django的MVC架构简介 112

4.1.1 MVC架构简介 112

4.1.2 Django的MTV架构 113

4.1.3 Django网站的构成以及配合 114

4.1.4 在Django MTV架构下的网站开发步骤 115

4.2 Model简介 116

4.2.1 在models.py中创建数据表 116

4.2.2 在admin.py中创建数据表管理界面 119

4.2.3 在Python Shell中操作数据表 123

4.2.4 数据的查询与编辑 125

4.3 View简介 127

4.3.1 建立简易的HttpResponse网页 127

4.3.2 在views.py中显示查询数据列表 129

4.3.3 网址栏参数处理的方式 131

4.4 Template简介 133

4.4.1 创建template文件夹与文件 133

4.4.2 传送变量到template文件中 134

4.4.3 在template中处理列表变量 137

4.5 最终版本摘要 138

4.6 习题 142

第5堂 网址的对应与委派 143

5.1 Django网址架构 143

5.1.1 URLconf简介 143

5.1.2 urlpatterns的Regular Expression语法说明 145

5.1.3 验证RE设计URL的正确性 148

5.2 高级设置技巧 149

5.2.1 参数的传送 149

5.2.2 include其他整组的urlpatterns设置 150

5.2.3 URLconf的反解功能 151

5.3 习题 152

第6堂 Template深入探讨 153

6.1 Template的设置与运行 153

6.1.1 settings.py设置 153

6.1.2 创建templates文件 155

6.1.3 在templates文件中使用现有的网页框架 156

6.1.4 直播电视网站应用范例 157

6.1.5 在template中使用static文件 161

6.2 高级Template技巧 163

6.2.1 Template模板的继承 163

6.2.2 共享模板的使用范例 165

6.3 Template语言 166

6.3.1 判断指令 167

6.3.2 循环指令 168

6.3.3 过滤器与其他语法标记 173

6.4 习题 176

第7堂 Models与数据库 177

7.1 网站与数据库 177

7.1.1 数据库简介 177

7.1.2 规划网站需要的数据库 178

7.1.3 数据表内容设计 181

7.1.4 models.py设计 182

7.2 活用Model制作网站 183

7.2.1 建立网站 183

7.2.2 制作网站模板 186

7.2.3 制作多数据表整合查询网页 188

7.2.4 调整admin管理网页的外观 192

7.3 在Django中使用MySQL数据库系统 194

7.3.1 安装开发环境中的MySQL连接环境(Ubuntu) 194

7.3.2 安装开发环境中的MySQL连接环境(Windows) 195

7.3.3 使用Google云端主机的商用SQL服务器 199

7.4 习题 203

第8堂 网站窗体的应用 204

8.1 网站与窗体 204

8.1.1 HTML 窗体简介 204

8.1.2 活用窗体的标签 208

8.1.3 建立本堂课范例网站的数据模型 210

8.1.4 网站窗体的建立与数据显示 212

8.1.5 接收窗体数据存储于数据库中 214

8.1.6 加上删除帖文的功能 215

8.2 基础窗体类的应用 217

8.2.1 使用POST传送窗体数据 218

8.2.2 结合窗体和数据库 222

8.2.3 数据接收与字段的验证方法 226

8.2.4 使用第三方服务发送电子邮件 229

8.3 模型窗体类ModelForm的应用 233

8.3.1 ModelForm的使用 233

8.3.2 通过ModelForm产生的窗体存储数据 235

8.3.3 为窗体加上防机器人的验证机制 237

8.4 习题 240

第9堂 网站的Session功能 241

9.1 Session简介 241

9.1.1 复制Django网站 241

9.1.2 Cookie简介 242

9.1.3 使用Cookie建立网站登录功能 243

9.1.4 开始使用Session 249

9.2 活用Session 250

9.2.1 建立用户数据表 250

9.2.2 整合Django的信息显示框架messages framework 257

9.3 Django auth用户验证 260

9.3.1 使用Django的用户验证系统 260

9.3.2 增加User的字段 264

9.3.3 显示新增加的User字段 266

9.3.4 应用auth用户验证存取数据库 268

9.4 习题 274

第10堂 网站用户的注册与管理 275

10.1 建立网站用户的自动化注册功能 275

10.1.1 django-registration安装与设置 275

10.1.2 建立django-registration所需的模板 276

10.1.3 整合用户注册功能到分享日记网站 280

10.2 Pythonanywhere.com免费Python网站开发环境 285

10.2.1 注册Pythonanywhere.com账号 286

10.2.2 在Pythonanywhere免费网站中建立虚拟机环境以及Django网站 292

10.2.3 建立投票网站的基本架构 298

10.3 使用Facebook验证账号操作实践 307

10.3.1 在Pythonanywhere中安装django-allauth与设置 307

10.3.2 到Facebook开发者网页申请验证机制 309

10.3.3 在网站中识别用户的登录状态 314

10.3.4 客户化django-allauth页面 318

10.4 习题 321

第11堂 社交网站应用实践 322

11.1 投票网站的规划与调整 322

11.1.1 网站功能与需求 322

11.1.2 数据表与页面设计 324

11.1.3 网站的转移 327

11.1.4 移动设备的考虑 329

11.2 深入探讨django-allauth 331

11.2.1 django-allauth的Template标签 331

11.2.2 django-allauth的Template页面 333

11.2.3 获取Facebook用户的信息 335

11.3 投票网站功能解析 336

11.3.1 首页的分页显示功能 337

11.3.2 自定义标签并在首页显示目前的投票数 339

11.3.3 使用AJAX和jQuery改进投票的效果 341

11.3.4 避免重复投票的方法 348

11.3.5 新建Twitter账号链接 350

11.4 习题 355

第12堂 电子商店网站实践 356

12.1 打造迷你电商网站 356

12.1.1 复制网站,不要从零开始 356

12.1.2 创建网站所需要的数据表 358

12.1.3 上传照片的方法django-filer 362

12.1.4 把django-filer的图像文件添加到数据表中 367

12.2 增加网站功能 370

12.2.1 分类查看产品 370

12.2.2 显示详细的产品内容 374

12.2.3 购物车功能 376

12.2.4 建立订单功能 381

12.3 电子支付功能 390

12.3.1 建立付款流程 390

12.3.2 建立PayPal付款链接 393

12.3.3 接收PayPal付款完成通知 400

12.3.4 测试PayPal付款功能 401

12.4 习题 407

第13堂 全功能电子商店网站 django-oscar实践 408

13.1 Django购物网站Oscar的安装与使用 408

13.1.1 电子购物网站模板 408

13.1.2 Django Oscar购物车系统测试网站安装 409

13.2 建立Oscar的应用网站 411

13.2.1 安装前的准备 412

13.2.2 建立网站的域名 412

13.2.3 调整Apache2配置文件 414

13.2.4 建立Django Oscar购物网站项目 415

13.2.5 加上电子邮件的发送功能 422

13.2.6 简单地修改Oscar网站的设置 424

13.2.7 增加PayPal在线付款功能 427

13.3 自定义Oscar网站 432

13.3.1 建立自己的templates,打造客户化的外观 433

13.3.2 网站的中文翻译 444

13.4 习题 445

第14堂 二级网络域名管理网站实践 446

14.1 建立网站前的准备工作 446

14.1.1 什么是二级网络域名以及网络域名代管服务 446

14.1.2 申请网络域名以及网络域名代管服务DNSimple 447

14.1.3 设置网站主机的空间 450

14.1.4 建立网站框架 450

14.2 建立会员网站 452

14.2.1 加入电子邮件功能 452

14.2.2 安装与使用django-registration 453

14.2.3 安装dnsimple模块 459

14.3 网站功能设计 461

14.3.1 建立网站首页的说明页面 462

14.3.2 创建数据表 463

14.3.3 建立网址管理页面 464

14.3.4 Subdomain数据表的存取 466

14.3.5 整合到dnsimple.com中 469

14.4 习题 475

第15堂 名言佳句产生器网站实践 477

15.1 建立网站前的准备 477

15.1.1 准备网站所需的素材 477

15.1.2 图文整合练习 478

15.1.3 建立可随机显示图像的网站 479

15.2 产生器功能的实现 483

15.2.1 建立产生器界面 483

15.2.2 产生的文件名 486

15.2.3 开始合并并产生图像文件 486

15.2.4 准备多个背景图像文件以供选择 490

15.3 自定义图像文件功能 496

15.3.1 加入会员注册功能 496

15.3.2 建立上传文件的界面 497

15.3.3 上传文件的方法 502

15.3.4 实时产生结果 504

15.4 习题 506

第16堂 课程回顾与您的下一步 507

16.1 善加运用网站资源 507

16.2 部署上线的注意事项 510

16.3 SSL设置实践 513

16.4 程序代码和网站测试的重要性 525

16.5 其他Python框架 528

16.6 您的下一步 528

在线预览

第9堂 网站的Session功能很多网站都会提供用户登录的功能,在用户登录之后会呈现客户化的数据,不过中间过程中使用网站上的多少个网页,网站都能够识别同一个用户,一直到用户注销或关闭浏览器为止。在浏览器中记住同一个用户的方法,一般都是使用Session(会话阶段),本堂课就为读者介绍如何在Django网站中使用Session的特性提升网站的功能。9.1 Session简介Session最重要的目的就是让网站记得用户,也就是浏览这个网站的人。因为因特网HTTP的特性,理论上每一次来自于浏览器的请求(request)都是独立的,和前后的请求没有关系,所以如果没有特别的机制,网页服务器是没有办法识别前后浏览行为是不是来自于同一个人的。Session机制的目的就是要解决这个问题。9.1.1 复制Django网站这一堂课开始的范例网站我们并不打算从头开始,而是使用上一堂课的ch08www网站,复制整个网站之后再进行修改,这样就可以省下不少工作。在开发阶段复制Django网站的方法很简单,只要把整个文件夹复制过来,再针对一些文件的内容进行修改就可以了。那么有哪些文件的内容需要修改呢?只有manage.py和ch08www文件夹的小部分文件。在Linux和Mac OS操作系统下可以使用grep指令找出和项目有关的字符串(例如ch08www),而在Windows操作系统下也有类似的工具,那就是findstr,用法如下:(VENV) I:\myDjango\ch08www findstr/s "ch08" .pymanage.py: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ch08www.settings")ch08www\settings.py:Django settings for ch08www project.ch08www\settings.py:ROOT_URLCONF = 'ch08www.urls'ch08www\settings.py:WSGI_APPLICATION = 'ch08www.wsgi.application'ch08www\urls.py:"""ch08www URL Configurationch08www\wsgi.py:WSGI config for ch08www project.ch08www\wsgi.py:os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ch08www.settings")全部要修改的地方就这几个文件,在本例中把所有ch08www改为ch09www就算是完成了网站的复制工作。9.1.2 Cookie简介在WWW网站开始流行后,很多网站的设计者都认识到识别用户的重要性,有时候就算是没有用户登录的操作,网站也会通过客户端的浏览器在客户端某些被限定的硬盘位置中写入某些数据,也就是所谓的Cookie。如果浏览器的这项功能没有被关闭,网站就可以在每次浏览器发出请求的时候先读取特定的数据,如果有就把这些数据显示到特定客户常用的网页。这也是在浏览某些网站的时候,这些网站会记住我们之前的一些浏览行为的原因。在Chrome浏览器的高级设置中可以找到和Cookie设置有关的数据,如图9-1所示。 图9-1 在Chrome中设置是否接受Cookie我们使用Django设计的网站,也可以使用Cookie来检查这个浏览器的请求者是否曾经访问过我们的网站。在使用前可以使用下面这段程序代码来检查客户端的浏览器设置是否接受Cookie:def index(request, pid=None, del_pass=None): template = get_template('index.html') if request.session.test_cookie_worked(): request.session.delete_test_cookie() message = "cookie supported!" else: message = 'cookie not supported' request.session.set_test_cookie() html = template.render(locals())第9堂 网站的Session功能很多网站都会提供用户登录的功能,在用户登录之后会呈现客户化的数据,不过中间过程中使用网站上的多少个网页,网站都能够识别同一个用户,一直到用户注销或关闭浏览器为止。在浏览器中记住同一个用户的方法,一般都是使用Session(会话阶段),本堂课就为读者介绍如何在Django网站中使用Session的特性提升网站的功能。9.1 Session简介Session最重要的目的就是让网站记得用户,也就是浏览这个网站的人。因为因特网HTTP的特性,理论上每一次来自于浏览器的请求(request)都是独立的,和前后的请求没有关系,所以如果没有特别的机制,网页服务器是没有办法识别前后浏览行为是不是来自于同一个人的。Session机制的目的就是要解决这个问题。9.1.1 复制Django网站这一堂课开始的范例网站我们并不打算从头开始,而是使用上一堂课的ch08www网站,复制整个网站之后再进行修改,这样就可以省下不少工作。在开发阶段复制Django网站的方法很简单,只要把整个文件夹复制过来,再针对一些文件的内容进行修改就可以了。那么有哪些文件的内容需要修改呢?只有manage.py和ch08www文件夹的小部分文件。在Linux和Mac OS操作系统下可以使用grep指令找出和项目有关的字符串(例如ch08www),而在Windows操作系统下也有类似的工具,那就是findstr,用法如下:(VENV) I:\myDjango\ch08www>findstr/s "ch08" .pymanage.py: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ch08www.settings")ch08www\settings.py:Django settings for ch08www project.ch08www\settings.py:ROOT_URLCONF = 'ch08www.urls'ch08www\settings.py:WSGI_APPLICATION = 'ch08www.wsgi.application'ch08www\urls.py:"""ch08www URL Configurationch08www\wsgi.py:WSGI config for ch08www project.ch08www\wsgi.py:os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ch08www.settings")全部要修改的地方就这几个文件,在本例中把所有ch08www改为ch09www就算是完成了网站的复制工作。9.1.2 Cookie简介在WWW网站开始流行后,很多网站的设计者都认识到识别用户的重要性,有时候就算是没有用户登录的操作,网站也会通过客户端的浏览器在客户端某些被限定的硬盘位置中写入某些数据,也就是所谓的Cookie。如果浏览器的这项功能没有被关闭,网站就可以在每次浏览器发出请求的时候先读取特定的数据,如果有就把这些数据显示到特定客户常用的网页。这也是在浏览某些网站的时候,这些网站会记住我们之前的一些浏览行为的原因。在Chrome浏览器的高级设置中可以找到和Cookie设置有关的数据,如图9-1所示。 图9-1 在Chrome中设置是否接受Cookie我们使用Django设计的网站,也可以使用Cookie来检查这个浏览器的请求者是否曾经访问过我们的网站。在使用前可以使用下面这段程序代码来检查客户端的浏览器设置是否接受Cookie:def index(request, pid=None, del_pass=None): template = get_template('index.html') if request.session.test_cookie_worked(): request.session.delete_test_cookie() message = "cookie supported!" else: message = 'cookie not supported' request.session.set_test_cookie() html = template.render(locals())

return HttpResponse(html)上述程序中使用了request.session.test_cookie_worked()函数,如果支持Cookie,就会返回True,反之则返回False。由于Cookie的工作原理是每一次request的前后都是独立的,因此在测试是否支持Cookie写入功能时要先写入一次测试的数据,然后在下一次request时才能够读出来,看看有没有之前写入的测试数据。因此,在程序中(本程序的倒数第3行)要先执行request.session.set_test_cookie(),而在下一次同一浏览器request时才能够判断,这是要注意的地方。如果Chrome浏览器进行了图9-1所示的设置,我们的网页就会判断此浏览器不支持Cookie(刷新之后),如图9-2所示。 图9-2 在网页中显示本浏览器不支持Cookie9.1.3 使用Cookie建立网站登录功能在确定能够读取用户的浏览器Cookie之后,就可以使用这种方式来实现网站的登录和注销功能了。在本小节先以一个简单的范例作为示范。首先,在header.html中修改以下信息,让网站的菜单可以根据用户登录与否决定要显示的内容: 分享日记

网友评论(不代表本站观点)

来自建***生**的评论:

此书不错,对我有帮助

2017-06-12 09:13:26
来自匿名用**的评论:

赶着活动买的,很合适

2017-07-22 09:54:57
来自无昵称**的评论:

完全一致,非常满意真的很喜欢,完全超出期望值,发货速度非常快,包装非常仔细、严实

2017-07-28 14:42:36
来自无昵称**的评论:

还不错这本书,经常在当当买书,各方面都不错,虽然偶尔物流速度会慢点

2017-07-29 10:33:05
来自匿名用**的评论:

垃。圾。当当,妈的卖书竟然这种包装,我买二手书都没这么惨,还没用书就这样了。。。。书还没看。就想来差评了

2017-09-11 12:33:41
来自无昵称**的评论:

很好,很实用

2017-09-15 20:59:52
来自无昵称**的评论:

书讲解的比较全面, 实例也比较详细

2017-09-30 09:44:54
来自灰***y(**的评论:

django更新换代很快,国内翻译的教程很多,但是很多材料都过时了,本书虽然也是用的老版本,但是案例足够充实,足够能入门,个人感觉比翻译的官方文档要好,如果要学django,可能是中文书唯一的书了。

2017-06-20 18:00:11
登录后即可发表评论

免责声明

更多相关图书
在线咨询