基于python的博客系统的设计与实现.docx
- 文档编号:11268476
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:40
- 大小:721.53KB
基于python的博客系统的设计与实现.docx
《基于python的博客系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于python的博客系统的设计与实现.docx(40页珍藏版)》请在冰豆网上搜索。
基于python的博客系统的设计与实现
毕业论文中文摘要
伴着互联网技术的全面普及与飞速发展,很多技术都实现了开源。
而开源技术如何被广为人知,博客系统正好可以满足这个需求。
博客系统可以进行朋友间的互动交流,发布自己感兴趣的话题和技术,内容丰富。
提供个人的总结和交流,结交更多的朋友和表达自己的想法。
博客可以随时发布,方便而便捷。
此次毕业设计采用python语言开发一个博客系统,系统使用eclipse开发平台,在开发环境中,对该软件进行设计和相关模块的编码和调试。
数据库使用SQLite。
系统运行流畅,各个模块分工明确,有良好的交互性。
使得使用者在交流时,体会到简洁方便。
整个博客系统拥有邮箱认证,发表并且评论博文的功能。
查看博主资料,并且关注博主的功能,达到博客系统的交流功能。
关键字python博客系统SQLiteeclipse
毕业设计说明书(论文)外文摘要
TitleThedesignandimplementationofblogsystembasedonPython
Abstract
WiththepopularityofInternettechnologyandtherapiddevelopment,manytechnologieshaveachievedopensource.Andhowopensourcetechnologyiswidelyknown,theblogsystemcanmeetthisdemand.Blogsystemcanbeafriendoftheinteractionbetweentheexchange,publishingtheirowninterestinthetopicandtechnology,richincontent.Providepersonalsummaryandcommunication,makemorefriendsandexpresstheirideas.Blogcanbereleasedatanytime,convenientandconvenient.
ThisgraduationdesignusesPythonlanguagetodevelopablogsystem,thesystemusestheeclipsedevelopmentplatform.Inthedevelopmentenvironment,thedesignofthesoftwareandthecodinganddebuggingoftherelatedmodulesarecarriedout.DatabaseusingSQLite.Sothatusersintheexchange,torealizethesimpleandconvenient.Theentireblogsystemhasamailboxcertification,publishedandcommentedonthefunctionofblogposts.Viewthemaininformation,andpayattentiontotheblogger'sfunction,toachievethecommunicationfunctionoftheblogsystem.
keywordsPython,Blogsystem,SQLite,Eclipse
目 录
前言
随着互联网技术的普及与飞速发展,信息文化之间的交流也得到了渠道的拓展。
在本次毕业设计中,采用Python技术进行WEB开发,涉及到构想设计思路、实现功能方法、解决异常步骤等等,这与以开发的Java工程一样。
唯一不同的是本次使用的Python语言开发,是一种新的体验。
在一定程度上,我觉得本次毕业设计还算是比较顺利,虽然引进了不少新技术,也遇到新的难题,但在不断的摸索中,都逐一解决了。
博客从2002年开始引入中国,当时数量不足1万人。
blog的中文名“博客”由方兴东、王俊秀提出的。
因为流行、实用的特点,所以开发博客系统让我对此次毕业设计提高了很大兴趣,邮箱服务器发送邮件、时间的本地化、正则匹配的应用、数据库之间的关系等等问题也困扰了好久。
在这过程中,设计思路逐渐明了,直至问题逐一解决。
事实上,解决开发过程中遇到的问题时,并没有那么容易,每一次对问题的克服都是对程序代码的一种熟悉和理解。
本次设计,主要有登录模块、博客文章管理模块、评论模块、用户资料模块、热点博客模块。
登录模块负责检验用户的有效性,防止恶意的攻击,拥有邮箱的验证。
博客管理模块中,用户可以编辑自己想发布的一些文章和修改这些文章,用户可以使用markdown的语法来让文章更加正规化。
评论模块中,登录用户可以对任何文章进行评论,评论显示在文章的下方。
言论管理员可以对评论进行管理,如有言论不正当的,也可以将言论屏蔽。
热点博客将博客显示按照评论进行排序,显示热度高的博客。
第一章绪论
1.1课题背景
在博客系统没有被开发使用之前,网民们经常会浏览一些发布论坛的网站,发表文章观点或者通过类似于腾讯QQ中的空间,来表达内心的看法与见解,可是通过使用这些媒介发布的文章都是零散的、杂乱无章的。
博客系统的出现,使用者可以把自己身处的境遇而激发的想法或者感受,通过博客系统发布到网站上与大家一起分享。
每次编写博文的时候,又会想到一些新奇的想法。
虽然某些想法可能没有什么深度,但是没打一个字都是对生活中所遇到事的一种思考与总结,洋洋洒洒的写完一篇博文会得到一种满足感,一种对自己当回作家的满足感。
生活中的点滴小事都会使人们迸发奇思妙想,甚至是和亲戚朋友一次的谈天中的想法。
监督自己把学到的东西或者是遇到困难的解决方案,亦或是对生活琐事的有感而发,这都是编写博客的目的。
督促自己每天做好总结和反思,一天中学到了什么,遇到了什么困难,体会到了什么感受。
很多各界的精英们也踏上了使用博客的道路。
譬如记者、明星、企业等都有了自己的博客网站,形成了一种独特的百家争鸣的状态。
企业界引入博客系统,为的是分享公司内部的一些学习资料和网络营销策略。
教育部门引进博客系统,为的是管理内部的知识仓库和沟通教学方法。
又如程序员使用博客系统来介绍自己的系统项目,将项目开源化。
不仅可以让其他用户学习新知识,也可以对项目进行改进和扩展。
1.2课题意义
博客的发展适应了全球范围内知识社会来临的发展脚步。
由于我国处于一个组织机构信息化的初级阶段,博客是一种充分发挥个人主导能力和具有积极意义的非正式知识管理工具还具有深度沟通交流的功能,博客系统的意义在于传播我们国家的知识、扩散知识和有效提升组织的学习和创新能。
博客系统用户的急剧增长以及系统得到广泛领域的应用,有助于推动中国学习型社会发展脚步。
本系统结合中国现实的情况以及博客互动性的特点进行设计开发,旨在为用户提供一个技术、学习、交流的平台,促进用户之间的沟通;并根据博客共享性的特点,推动用户间的知识交流,使博客系统成为一个知识分享的园地。
此次毕业设计的意义在于运用在学校学到的技术和在学校培养的自学能力进行独立设计一个系统。
通过深入社会实践、了解社会结构、完成毕业设计任务并且撰写论文等,着重培养我们的综合分析能力和解决问题的能力和提高独立性、管理组织和提高社交能力。
运用在公司学到的知识加以应用,和公司同事加强技术交流,提升技术和社交能力。
这也是对自身在学校学到的知识和自身自学能力的检验。
本次所用到的技术为python语言,此前并没有在学校学过,是对综合素质与工程实践能力培养效果的全面检验,这也是对自己的一次挑战!
当然此项毕业设计还涉及web知识,数据库知识等。
并且用现在比较流行的技术来做毕业设计,也是选择了一个明朗的方向。
第二章系统主要技术简介
2.1Python简介
Python和Java一样都属于面向对象的语言,不同的是Python是一种直译式计算机程序设计语言,也是功能十分强大的多平台语言,具有近二十年的发展历史,拥有成熟性和稳定性。
Python包含了一系列功能完善并且容易理解的标准库,快速轻松的完成比较多见的任务。
Python语法具有简捷和清晰的特点,与其它计算机编程语言不同的是,它采用缩进区分语句块。
Python支持采用命令的编程方式、面向对象编程、面向函数式编程、面向切面编程、泛型编程等多种程序设计方式。
和很多动态语言如Scheme、Ruby、Perl、Tcl等一样,Python同样拥有垃圾回收的功能,可以自动管理系统的内存使用。
它经常被用作脚本语言来处理后台任务和Web编程,然而它也能非常完美的完成多种高阶任务。
Python虚拟机基本上可以在所有的操作系统中运行。
使用一些工具诸如py2exe、PyPy、PyInstaller可以将Python源代码转换成可以不需要Python解释器就可以执行的程序。
Python特点:
1.简单易学:
Python上手比较快,因为Python简单并且丰富的说明文档。
2.运行速度快:
Python的底层语言是用C语言,Python中很多标准库还有第三方库也都是运用C语言写的,运行速度非常迅速。
3.开源性:
Python是众多的开放源代码之一。
使用Python的程序员可以随意的复制、阅读源代码。
4.高层语言:
运用Python语言编写程序时不需要考虑一些例如如何管理程序使用内存一类的底层细节。
5.可移植性:
由于Python开源的特点,Python可以被移植到许多平台上(经过代码的修改使它能在不同平台上工作)。
例如pc端的系统Linux、Windows等、还有移动端的Symbian以及Google基于linux开发的android平台。
6.解释性:
用C语言或C++写的程序可以从源文件(C或C++语言)转换成一个当前计算机所使用的语言(即0和1)。
通过这个步骤编译器和不同的标记、选项来完成任务。
使用计算机内部系统时,Python解释转换源代码转换成称为字节代码的中间代码,然后将其转换成由当前计算机使用,并运行该代码的机器语言。
这一过程使得它更容易使用Python。
同时Python程序变得更容易移植。
7.面向对象:
Python不仅支持面向过程的编程也支持面向对象的编程。
在这个过程中取向的语言中,程序由一个过程或只是一个可重复使用的代码功能建立起来。
8.可扩展性:
如果你想有一个关键的代码运行得更快或者希望某些代码不开放,你可以使用C或C++写一些程序功能,然后调用他们的Python程序。
9.可以嵌入性:
开发者可以嵌入Python代码到C/C++程序,它提供了脚本功能的系统用户使用权限。
10.丰富的库:
Python标准库很庞大。
它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试等等。
只要安装了Python,所有这些功能都是可用的。
这被称作Python的“功能齐全”理念。
除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
11.规范的代码:
Python使用tab键来分割语句使得代码具有良好可读性。
并且Python语言写的程序代码不需要编译成二进制代码。
2.2SQLite简介
SQLite,是一个轻型的数据库,遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。
它是D.RichardHipp建立的公有领域项目。
不像常见的客户-服务器范例,SQLite引擎不是建立程序来和引擎通信的独立进程,而是一个主要组成部分来连接到程序。
所以主要的通信协议直接调用编程语言内的API。
这在消耗总量、延迟时间和整体简单性上有积极的作用。
整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。
它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
特点:
1.支持数据库事务
2.无需配置:
不安装和管理配置也能使用
3.信息被存储在单个磁盘文件中,而且整个数据是存储在完整的数据库中。
4.数据库文件可以在不同字节顺序的机器间自由共享。
5.数据库大小最多支持到2TB大小。
6.该数据库包含130万行C代码大约4.43M。
7.相对于目前流行的数据库做一般的数据库curd操作要快。
8.数据库的操作十分简单,API简单易懂。
9.源代码的注解十分详细,测试覆盖率达到90%以上。
10.独立性:
无需依靠其他依赖就可使用。
11.代码开源,用户可以将源代码用到任何场所。
12.支持多种语言开发程序,例如C语言,C++,Java,Python等主流语言。
2.3eclipse简介
Eclipse是有IBM开发的著名的跨多平台的自由集成开发环境软件(IDE)。
最初软件开发用做Java语言开发,现在也可以通过添加插件使其成为其他计算机语言的开发工具例如C++和Python。
Eclipse的插件机制的建筑风格是轻量级的软件组件。
在客户机平台上,Eclipse使用插件添加所有的附加功能,如Java之外的其他编程语言的支持。
该插件已经被分离,支持C/C++(CDT)、数据库开发等多种用途和语言开发。
插件架构可以支持任何延伸到现有的开发环境,例如配置管理,这并不限定于支持各种编程语言。
一切都是插件是Eclipse的设计思路。
Eclipse的核心并不大,除了java开发,其它所有功能,都把插件添加到Eclipse的核心中。
Eclipse的基本核心包括:
图形API(SWT/JFace的),Java开发环境插件(JDT),插件开发环境(PDE)等。
第三章系统需求与分析
3.1系统功能需求
3.1.1用户认证
用户认证模块针对所有用户,用户连接程序进行身份认证,通过认证后,程序知道用户身份,就可以提供针对性的体验。
1.密码的安全性,运用计算密码散列值来实现对密码的保护。
2.使用蓝本实现不同界面的跳转功能。
3.用户登录后,认证状态被Flask-Login记录下来,管理用户认证系统中的认证状态。
4.新用户想成为成为其中的一员,必须在博客系统中注册,根据博客系统的需求,用户分为3个角色:
用户、言论管理员、管理员。
1)用户的主要功能
用户的用例图如图3-1所示。
图3-1博客系统用户用例图
账号操作:
注册账号,设置认证邮箱和密码,并且具有修改自己邮箱账号和密码。
修改个人资料:
编辑作者的姓名,位置等信息。
发布博文:
用户可以随性所欲的发表自己的想法和理念。
修改博文:
用户可以修改自己发布的文章。
关注博主:
关注其他用户,在指定一栏中显示关注者的文章。
查看个人资料:
点击用户,链接到作者的用户资料界面。
2)言论管理员的功能
言论管理员的用例图如图3-2所示。
图3-2博客系统言论管理员用例图
言论管理员拥有普通用户的权限,并且具有言论管理的权限。
如果有用户使用了不正当的言论,管理员可以将评论给屏蔽掉。
3)管理员的功能
管理员的用例图如图3-3所示。
图3-3博客系统管理员用例图
管理员拥有言论管理员的权限,还有修改所有用户的用户组和用户资料。
5.用户可以管理自己账号,修改个人资料和邮箱地址和密码。
3.1.2用户角色
程序对于角色赋予了不同的权限。
所有用户的权限总共一下几种操作:
关注用户,在他人的博文中发表评论,编写博文,管理别人发表的评论,管理权限。
角色分为4种:
1.匿名游客在系统中只有阅读权限。
2.用户编辑并发表文章、发表自己的言论、关注他人、查看他人信息的权限。
3.言论管理员审查那些不当的言论的权限。
4.管理员拥有所有的权限,并且包括修改所有注册用户的角色的权限。
3.1.3用户资料
网络社交中往往会有提供给用户的资料页面,只要用来了解到作者的个人信息和兴趣爱好。
用户可以把自己资料的URL分享给其他人,这样别人能更方便的了解作者。
用户资料中有用户姓名、用户所在位置、关于用户的信息、加入博客系统时间等信息。
用户可以编辑自己的资料,但只是编辑一些基本的资料。
管理员则在编辑用户时会有编辑用户角色的权限,修改用户的权限资料。
在编辑上要创建两个不一样的表单。
用户的头像使用的是其他网站上的图片。
使用Gravatar提供的头像。
用户只需在网站上绑定自己的邮箱和头像图片,就能使得在博客系统中显示同样的头像。
3.1.4博文管理
博客系统中允许用户阅读文章,撰写博文。
用户不仅可以读取关注的作者博文,还要能自己发表博文。
如果对博文不满意的地方还可以进行修改。
对所看的博文有不同意见或者赞同的话也可以评论进行交流。
管理员可以直接修改博文,并且可以屏蔽掉不当的言论。
编写博文时,会用到一些标题、引用等特殊格式,所以在编辑博文的时候用到Markdown的语法,简单方便的将文章进行标准化。
3.2开发环境需求
1、硬件要求
既为终端又为服务器的一台计算机
pc机属性:
CPU:
i52.0GHz
内存4G
硬盘:
1T
2、软件要求
Windows7操作系统
SQLite数据库
EclipseMars.2Release开发工具
Python2.7库
Chrome浏览器
第四章系统设计
4.1系统功能设计
1、认证管理,如图4-1所示。
图4-1用户认证图
游客访问博客系统时,只能查看一些博文和博主的简单资料,如果要进行深入了解还需注册账户。
在注册账户的时候,要求用户提交常用电子邮箱账号和本系统中的用户名及密码。
在注册时对邮箱和用户名进行正则校验,不符合条件的无法注册。
注册成功后,系统通过SMTP邮箱服务器发送一封确认邮件,收到邮件后单击URL链接后才可以登录博客系统。
或者管理员可以在资料中,修改用户的确认状态。
用户还可修改自己的邮箱地址和博客系统密码。
修改邮箱时也需进行邮件确认。
2、个人资料管理,如图4-2所示。
图4-2个人资料管理模块图
用户在注册账户后会提交一些个人资料,这些资料用于博友之间的互相了解。
用户登录博客系统后可以对自己的个人资料进行管理。
点击主页面的个人资料链接,首先显示的是用户自己的资料。
单击编辑资料按钮,将数据库中的数据加载到表单中。
编辑用户资料分为两种情况。
显而易见,第一种情况用户进入一个页面编辑自己的资料。
还有一种是管理员的操作,单击编辑资料可以加载User模型中的字段,例如用户角色。
这两个编辑功能有本质上的区别,所以在设计的时候要创建两种不一样的表单来进行资料修改。
用户级别的编辑资料只加载用户的姓名、位置、相关信息3个字段,提交不需要对信息进行校验。
而管理员的编辑资料就显得复杂一些,管理员还需编辑用户的电子邮件、用户名、确认状态和角色。
邮箱和用户名在提交时要进行正则匹配,如果不符合要求,则不通过验证。
3、博客管理,如图4-3所示。
图4-3博客文章管理图
用户在使用博客系统时,只要就是享受查看博客和编写博客的乐趣。
所以博客管理是比较重要的模块。
博文拥有编号、正文、时间戳和作者编号这几个字段。
程序首页就有编写博文的表单。
如果角色拥有写文章的权限,则会显示编辑博客文章的表单。
如果是游客访问的话,写文章的表单不会显示出来。
博客文章主页显示的每一条博文都有博主的用户名、头像、发布时间和博客文章。
可以点击上面的超链接,访问其他页面。
如果发布的是短消息或者只是更新近期的状态,纯文本格式的就已经足够了。
但是如果发布博客文章的话就在格式上被限制住了。
所以引入Markdown的语法来给文章添加一些格式。
运用pagedown模块,调用JavaScript实现Markdown的转换,能够在表单的下方进行预览。
提交时,只提交表单中的Markdown源文本。
4、关注与评论,如图4-4所示。
图4-4关注作者与评论功能图
在程序中有一层关系叫做关注者与被关注者。
这个功能用来在主页中一个页签中显示所有关注者的文章包括自己的。
数据库中运用follows表来记录关注问题。
所以在显示已关注者的页签时,使用表的联查来获取所有关联的博客文章。
如果想取消用户之间的联系,可以单击取消关注按钮,通过数据库中记录的删除来实现。
个人资料中还可点击粉丝来查看关注自己的用户信息,关注按钮则是跳转到用户自己关注的作者的信息界面。
用户具有对博客系统中文章评论的权限,但是拥有评论的权限也必须履行言论正当的义务。
当用户使用不恰当的言行时,言论管理员可以将改评论置为不可见,理论上不从数据库中删除。
超级管理员不仅可以编辑已发布的博客文章,还可以管理用户的评论,也是将评论置为不可见。
4.2数据库设计
在博客系统中涉及到很多用户之间的交互,良好的边间关系显得尤为重要。
系统中总共6个表,分别为版本表version、评论表comments、关注表follows、博客文章表posts、角色表roles、用户表users。
版本表在本系统中作用不大,只是为了以后的功能扩展做铺垫。
系统中数据库表关系如图4-5所示。
图4-5表间关系图
1、角色表roles中,存储的是用户的3种角色。
各个字段如下图表4-1所示。
字段名
类型
长度
默认值
字段说明
id
integer
0
PK主键
name
varchar
64
用户名UNIQUE
default
boolean
0
默认为用户
permissions
integer
0
用户权限值
表4-1角色表
每一个用户注册,id自动加1,用户名和数据库中的用户名进行比较,没有相同的则可以申请。
注册账号时,博客系统默认使用者为用户,所以只有普通用户的default字段为true,普通用户、言论管理员、管理员的权限值分别为7、15、255。
2、用户表users如图4-2。
字段名
类型
长度
默认值
字段说明
id
integer
用户编号PK
username
varchar
64
用户名
role_id
integer
用户角色编号
varchar
64
用户邮箱地址
password_hash
varchar
128
密码哈希散列值
confiremed
boolean
邮箱是否确认
about_me
text
关于作者资料
last_seen
datetime
上次登录时间
location
varchar
64
位置
member_since
datetime
加入博客系统的时间戳
name
varchar
64
用户姓名
avatar_hash
varchar
32
邮箱散列值
表4-2用户表
用户表中用户id作为主键,用户名不可重复。
role_id为roles表中的id,作为此表中的外键,用来确定用户属于那种角色。
邮箱地址、加入系统的时间都是在注册的时候就填写的。
密码的哈希散列值则是通过输入的密码进行转化得来,邮箱散列值也是如此。
3、关注表follows如表4-3所示。
字段名
类型
长度
默认值
字段说明
follower_id
integer
关注者id
followed_id
interger
被关注者id
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 python 博客 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)