摘要
当今,随着Internet的迅速普及以及网络技术的发展,人们的生活也越来越离不开这些东西,忙碌的生活,对着荧光屏幕的一整天,或许有效的记录可以在我们的生命中留下重要的点滴。这样的情况下,一个在线版的个人博客系统就显得非常有必要了。
本文论述了个人博客的特点,以及对其系统设计进行分析,并给出其功能以及数据库的设计。
关键词
Python、MySQL、django、web应用程序开发、网站建设、CMS内容管理系统
系统概述
背景
博客最初始的名称是Weblog,由web和log两个单词组成,按照字面意思就为网络日记,后来喜欢新名词的人把这个词的发音故意改了一下,读成we blog,由此,blog这个词被创造了出来。
Weblog就是在网络上发布和阅读的流水记录,通常称为“网络日志”。
简言之,Blog就是以网络作为载体,作者可以迅速便捷地发布自己的心得感想,并且可以及时有效的与他人进行交流。另外,一个Blog系统某种意义上来讲也是博主的个性化体现,我们可以通过不同的文章去了解作者,去感受作者想要描绘的思想。
一个Blog其实就是一个网站,它里面通常包含很多篇文章,所有的文章按照时间倒序排列,而读者则可以针对阅读过的文章发出评论与作者进行交流。许多Blog文章都是作者心之所想事情的发表,或者针对某件事情的记录,又或是一些成功的经验。
名称
命名为Flow的原因
- 文章归档形如流水线的设计
- 更快、更简洁的流水式发布
- min_cost_max_flow
作用
- 个人的自由表达与发布
- 知识的过滤与积累
- 深度交流沟通的网络新方式
博客,之所以公开在网络上,就是因为他不等同于私人日记,博客的概念肯定要比日记大很多,它不仅仅要记录关于自己的点点滴滴,还注重提供的内容能否帮助到别人。
系统设计
系统需求分析
简述
我们都希望有一个自己的博客网站,因为它可以用来记录我们生活的点点滴滴,也可以分享一些实践乐趣、成功经验。博客是公开的,大家都可以看到我们的文章,同时也都可以通过留言评论与博主进行交流,共同进步。
于是Flow Blog诞生了。
系统目标
前台
- 简约、快速、响应式设计
- 可阅读文章并对其进行评论
- 可通过分类或标签对文章进行过滤
- 实现友情链接页面
- 实现文章归档页面
- 实现RSS阅读
后台
每一个用户都有自己在系统中的权限,而在满足权限的条件下,他可以
- 创建组,并且可以修改该组所持有的权限
- 添加用户,可对新添加的用户授权
- 发表文章,文章可设置为对外公开或对外隐藏
- 创建页面(首页侧边栏所有的全站链接)
- 添加友链(友情链接页面)
- 添加标签(一个文章可含有多个标签属性)
- 添加分类(一个文章只能在一个分类里面)
- 更新评论(对读者所评论的内容等做出修改)
性能
- 实用性:旨在提高内容管理和发布的效率
- 先进性:后台采用ajax技术进行异步刷新
- 便捷性:无论身处何地,无论时间,只要接入Internet网络,便可以随时创建并发布自己的文章
技术可行性
对于在浏览器上运行的web程序来说,我们首先想到的应该是B/S架构,服务器进行处理并返回我们在浏览器上所进行的操作请求。因此,主要的编程即为服务器端的编程,结合关系型数据库,共同组成一个完整的博客系统。
数据库设计
实体集
首先,系统应该包含前台与后台,前台负责展示文章,后台可以添加并修改文章,因此系统中必须要有用户存在。
支持多用户同时登陆并进行操作,每一个用户可操作的内容不同,因此便有了用户权限问题,为了方便同样权限的用户统一管理,我们引入了组的概念,管理员可以创建组并赋予组一定的权限,而在组中的用户便得到了这些权限,这有点类似于数据库中的角色。
作为博客系统,我们要能在其中发布自己的文章与页面,于是便派生出文章、页面这两个实体,一般情况下我们可以选择让这两者合并。
文章都应该有自己的分类、标签等属性,而读者则可以对已公开的文章进行评论,于是便有了分类、标签、评论三个实体。
既然一个博客在某种程度上可以体现我们的个性化程度,同时我们在阅览别人的博客时也为了方便,想保存他人的链接以备后用,友情链接是一个比较好的选择,我们可以通过它很快的进入到它所链接的页面,当然是我们已经添加的地址。由此,链接便是一个独立的实体。
实体 | 描述 |
---|---|
auth_user | 用户 |
auth_group | 组策略 |
auth_permission | 权限表 |
flow_page | 页面 |
flow_post | 文章 |
flow_category | 文章分类 |
flow_comment | 评论 |
flow_tag | 文章标签 |
flow_link | 友情链接 |
pyblog_log | 日志审计 |
auth_user
字段名 | 类型 | 大小 | 默认值 | 允许为空 | 属性 | 说明 |
---|---|---|---|---|---|---|
id | int | 11 | False | 主键、自增 | 用户ID编号 | |
password | varchar | 128 | False | 用户密码(md5) | ||
last_login | datetime | 6 | False | 用户最后一次登录时间 | ||
is_superuser | tinyint | 1 | 0 | False | 是否为管理员 | |
username | varchar | 150 | False | 唯一 | 用户登录名 | |
first_name | varchar | 30 | ” | True | 名 | |