基于How To Tango With Django 1.7的实践(1)

来源:互联网 发布:淘宝女装店铺推广方案 编辑:程序博客网 时间:2024/05/29 08:45

这本书的要点是开发一个叫做Rango的应用.为了开发这个应用,它将会覆盖我们制作web应用大部分核心内容.

2.4Rango:初始设计和规划

2.4.1 设计概要

你的客户端需要建立一个叫做Rango的网站,它可以让用户浏览它们自己订制的网页.在西班牙语种,rango曾经意味着”通过质量排序”或者”在社会等级中的位置”(查看 https://www.vocabulary.com/dictionary/es/rango ).

在网站的主页上,让浏览者看到:

  • 5个查看最多的页面
  • 5个质量最高的目录
  • 访客浏览或者查找目录的方法

当一个用户查看一个目录页,将会展现:

  • 目录名称,访问数量,喜欢数量;
  • 与目录相近的页面(展示页面标题和它的url);
  • 一些搜索功能(通过Bing的搜索API)用来查找一些其他能链接到这个目录的页面
  • 一个特殊的目录,客户端希望目录的名字,每个目录页面被访问的次数和多少个用户点击’like’按钮被记录

  • 每个目录都可以通过一个可读的URL访问 - 比如. /rango/books-about-django/.

  • 只有注册的用户才能为目录搜索和增加页面.同时,访问者可以注册一个账户.

第一眼看上去,这个应用看起来很奇怪.事实上,它就是一个目录列表,他们可以链接到页面,对吗?然而,这里还有许多复杂的东西需要处理.首先,让我们试着画一张图来展示我们要开发什么东西.

2.5 练习

在继续接下来的内容之前,考虑下面的说明,试着画出设计图.

  • 一个N-层或者系统架构图
  • 主页和目录页的框架
  • URL绑定
  • 我们将要实现数据模型的实体-关系图

2.6 N-层结构

大多数web应用的结构是3-层结构.Rango则是这个结构的变体,它需要和一个外部服务交互.

该UML图使用processon绘制

这里写图片描述

如果我们用Django来创建web应用的话,我们每层需要如下技术.

  • client是一个浏览器(i.e. Chrome, Firefox, Safari等等),它将返回 HTML/CSS页面.
  • middleware是一个Django应用,它会贯穿我们开发Django内建web服务的始终.
  • database将会是基于Python的SQLite3数据库引擎
  • search API将会是Bing的搜索API

尽管我们需要处理上图中所有的部分,但这本书大部分的精力都集中在开发中间件(middleware).

2.7 线框

网站线框图为设计网站界面提供很大的帮助.它们可以节省很多时间,它不同于依赖工具的手工绘制.对于Rango,我们希望它的首页如下图所示.

这里写图片描述

目录页如下图所示:

这里写图片描述

2.8 页面和URL映射

通过规则说明,我们已经确认在不同的时间我们将会给用户呈现两个页面.为了进入不同的页面我们需要对URL进行映射.URL映射就是用户为了进入网页而在浏览器输入的文本.Rango的URL映射如下.

  • /rango/将会指向主页视图.
  • /rango/about/将会指向about页面视图.
  • /rango/category//将会指向每个的目录页视图,这个目录可能是:
  • 游戏;
  • python小技巧
  • 代码或者编译程序
  • /rango/etc/,为将来的功能实现留出etc

当我们创建应用时,我们可能需要创建一些别的URL映射.但是上面那些使我们首先要建立的.还有要考虑到提供的目录名字不存在时,我们需要把目录名字转换为一个有效的URL字符串.

随着对这本书的深入,我们会逐渐掌握用Django框架来创建网页和用Model-View-Template设计模式.现在我们只是对URL映射和网页交互界面有个大概的印象,我们还需要定义数据模型来为我们的应用提供数据.

2.9 实体-关系图

通过给出的规则,我们知道至少有两个实体:目录和页面.同时一个目录可以容纳许多页面.我们可以通过以下ER图来描述我们的数据模型.

这里写图片描述

注意一点,一个页面可以在一个或多个目录里.所以我们需要建立多-对-多的关系.为了将问题不那么复杂化,我们做个简单的假设,一个目录可以包含多个页面,但是一个页面只能属于一个目录.这并不能防止了一个页面出现在两个不同目录的情况 - 在不理想的情况下,页面可能进入两次.

写技术笔记是个好的喜欢,尤其是当你知道它会再次出现的时候!通过记下它们,你可以和你的开发团队进行交流确保相同的问题可以可以很快解决.

建表如下,Str表示一个string或者char,Int表示一个integer,URL表示一个URL而FK表示Foreign Key.
这里写图片描述

我们同样有一个用户表 - 这里没有展示,将在以后介绍.在接下来的章节里我们可以看到在Django里如何实例化这些数据模型,并且了解如何用Django的ORM去连接数据库.

2.10 总结

这些设计和说明将会对我们构建我们的web应用提供很好的帮助.我们要用到的技术和步骤同样适用于大多数数据驱动的网站.熟悉这些规范和设计对我们有很大的好处.

如果你已经安装了了Python2.7和Django1.7,你对命令行设置你的路径有所了解,那么你可以直接跳过Django基础这一章.否则,让我们一起来看第三章.

2.10.1 和Django官方教程一起学习

我们建议Django官方教程作为这本书每个章节的练习题.你可以在下表中找到这两本书章节之间的对应关系.官方教学的练习将会帮助你深入了解Django框架,而且会提升你的技巧.

Tango woth Django Django Tutorial
Chapter 3 Part 1 - Models
Chapter 5 Part 2 - The Admin Interface
Chapter 6 Part 3 - URLs and Views
Chapter 7 Part 4 - Templates
Chapter 18 Part 5 - Testing
Chapter 11 Part 6 - CSS

4 0
原创粉丝点击