基于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
- 基于How To Tango With Django 1.7的实践(1)
- 基于How To Tango With Django 1.7的实践(3)——Django Basics
- 基于How To Tango With Django 1.7的实践(2)
- 基于How To Tango With Django 1.7的实践(5)——Models and Databases
- 基于How To Tango With Django 1.9的重新实践(0-5)
- 基于How To Tango With Django 1.9的重新实践(7)——Forms
- 基于How To Tango With Django 1.9的重新实践(8)——Templates
- 基于How To Tango With Django 1.9的重新实践(9)——User Authentication
- 基于How To Tango With Django 1.9的重新实践(12)——Bootstrapping Rango
- 基于How To Tango With Django 1.9的重新实践(13)——Template Tags
- 基于How To Tango With Django 1.9的重新实践(14)——Bing Search
- 基于How To Tango With Django 1.9的重新实践(15)——Webhose Search
- 基于How To Tango With Django 1.9的重新实践(16)——Rango Exercises
- 基于How To Tango With Django 1.9的重新实践(17)——Hints
- 基于How To Tango With Django 1.9的重新实践(18)——JQuery
- 基于How To Tango With Django 1.9的重新实践(19)——Ajax
- 基于How To Tango With Django 1.7的实践(4)——Templates and Static Media
- 基于How To Tango With Django 1.9的重新实践(11)——User Authentication with {#chapter-redux}
- 496. Next Greater Element I(寻找下一个较大的数)
- spring security控制权限的几种方法
- Java Web开发Session超时设置
- 解决Android Studio DDMS 中文件打不开的问题
- 使用git命令修改指定的commit提交记录并提交到远程服务器的方法
- 基于How To Tango With Django 1.7的实践(1)
- 1
- 多校联盟#con1 数学题
- 将Excel表格或者CSV文件导入到Mysql中
- spark sql 中出现的问题
- hibernate二级只读缓存设置 --oracle 是对sessionFactory而言的
- [LeetCode]372. Super Pow
- Codeforces #402 (Div. 2) C. Dishonest Sellers
- 输入n个整数,找出其中最小的K个数