《基于python的博客设计与开发大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于python的博客设计与开发大学本科毕业论文.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要目前,知识的学习十分的重要,我们要做到的不是固步自封,而是应该共享给所有的人,现在知识的学习还是很不方便。博客的开发与设计就能够实现该功能,用户发表博文后,其他用户可以看到,同时用户也可以记录一些重要的信息等。在软件开发活动中,无论何种服务,应用系统的开发仍然是开发的主题,博客就是这样一个B/S模式的系统。一个庞大的博客管理系统面向的用户很多,提供的功能也很多,如提供用户注册、用户管理、个人博客、发表博文、删除博文、留言、以及搜索博文等。本系统采用了Django框架进行开发。本文主要分析了该系统实现的相关技术原理与数据设计,给出了博客的系统架构,并对架构及管理模块结构作了划分及设计。本系统
2、采用了当前流行的B/S 结构,通过运用Python、Django 、TinyMCE、JQuery、Apache和Sqlite数据库等软件的强大功能完成了该系统的设计。本系统完成了用户注册功能,用户需要设定自己的用户名和密码以及自己的基本信息;用户登录功能、管理员后台登录功能,用户只有输入正确的用户名、密码才可以登录;用户修改密码功能,用户修改密码的实现只能在登陆的情况下;管理员修改用户的所有信息功能,管理员可以修改用户的用户名与密码、博客的博文及博文的点击量;用户发表博文,用户登陆后可以在自己的博客中发表博文,同时也可以进行留言。查看精华帖,用户不论登陆与否,都可以查看精华帖(点击量最高的前5
3、条);用户删除博文,用户登陆后可以删除自己的博文;用户发表添加分类,用户登陆后,当发表博文时,可以自定义添加分类。下面主要对博客的开发与设计进行了概述、系统开发环境、系统分析、设计与实现等的介绍。关键词:Python,Django,TinyMCE,JQuery,BootstrapAbstractCurrently, the study of knowledge is very important and we do not want to rest on our laurels, but should be shared to all people, and now the study of
4、knowledge is very convenient. Blog development and design will be able to achieve this function, the user Bowen, other users can see, and you also can record some important information.In software development activities, regardless of service, application development system development is still the
5、subject of blog is such a B / S mode system. A huge blog management system for many users, providing many functions, such as providing user registration, user management, personal blog, Bowen, Bowen deleted, messages, and search Bowen and so on. The system uses the Django framework for development.T
6、his paper analyzes the technical principles related to implementation of the system and data design, system architecture gives the blog, and the structure and management module structure and design were divided. The system uses the popular B / S structure, through the use of Python, Django, TinyMCE,
7、 JQuery, Apache and Sqlite database software such as completion of the powerful features of the system design.The system completed the user registration feature, users need to set up your own user name and password, and their basic information; user login function, the administrator back-log functio
8、n, the user only enter the correct user name and password before you can log; user to modify the password function the user to modify the password can only be realized in the case of landing; administrator to modify the user all the information, the administrator can modify the users user name and p
9、assword, and blog Bowen Bowen hits; user Bowen, user login in his blog Bowen, but can also be a message. View Digest posts, the user regardless of landing or not, you can view the essence of software (hits The top five); User deleted Bowen, user login can delete your own blog; User published to add
10、categories, user login, when Bowen , you can add custom categories. Here on the blog mainly gives an overview of the development and design, system development environment, systems analysis, design and implementation of introduction.KeyWord: Python,Django,TinyMCE,JQuery,Bootstrap目录1系统的相关概述11.1Django
11、简介11.2Bootstrap 简介11.3JQuery简介11.4TinyMCE简介11.5 Sqlite3简介.22系统开发和环境介绍22.1基本环境22.1.1安装Apache22.1.2配置Apache22.1.3安装Python32.1.4安装Django43系统分析43.1开发背景43.2系统功能需求分析53.3需要实现的功能及功能模块53.3.1 用户注册53.3.2用户登录53.3.3修改用户密码53.3.4查看博文53.3.5发博文53.3.6查看个人信息63.3.7删除博文63.3.8评论63.3.9注销63.4系统流程分析63.4.1系统的功能图63.4.2系统的用例图8
12、3.4.3系统的流程图84系统设计与实现94.1数据库设计94.1.1角色分析94.1.2数据库建表(models)104.3系统前台设计104.4部分功能代码144.4.1用户注册144.4.显示博文详细内容144.4.1分页155总结与展望166参考文献171概述1.1 Django简介Django 是应用于 Web 开发的高级动态语言框架,最初起源于美国芝加哥的 Python 用户组,具有新闻从业背景的 Adrian Holovaty 是 Django 框架的主要开发者。在 Adrian 的带领下,Django 小组致力于为 Web 开发者贡献一款高效完美的Python 开发框架,并且在
13、 BSD 开放源代码协议许可下授权给开发者自由使用。Django 拥有完善的模板机制、对象关系映射机制以及用于动态创建后台管理界面的功能,利用 Django,可以快速设计和开发具有 MVC 层次的 Web 应用。为了打消开发者选用 Django 框架时的疑虑,首先分析一下 Django 引人注目的特性。在实体映射方面,Django 的对象相关映射机制帮助开发者在 Python 类中灵活定义数据模型,并且Django 具有功能丰富的动态数据库访问 API,可以大幅度简化书写 SQL 语句的繁杂工作。同时 Django 支持包括 Postgresql,MySql,Sqlite,Oracle 在内的
14、多种后台数据库。 Django 的 URL 分发设计的十分简洁美观,不会在链接中产生一大串杂乱且难以理解的字符。使用 Django 可扩展的内置模板,可以将模型层、控制层与页面模板完全独立开来进行编码。Django 还具有自己的 Cache 系统,如果需要,也可以根据开发者的要求嵌套其他的 Cache 框架。1.2 Bootstrap简介Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言L
15、ess写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 1.3 JQuery简介JQuery是继prototype之后又一个优秀的Javascript框架。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。JQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互
16、。JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。JQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。1.4 TinyMCE简介TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成。它对IE6+和Firefox1.5+都有着非常良好的支持。能够满足大部分网站的需求,并且功能配置灵活简单。另一特点是加载速度非常快,而且可以让用户自由的定制,TinyMCE是一个根据LGPL license发布的自由软件,你可以把它用于
17、商业应用。1.5 SQLite简介SQLite是遵守ACID1的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。2不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。2系统开发和环境介绍2.1基本环境在Linux系统下,以Python语言为基本开
18、发语言,通过运用Django框架、Sqlite3数据库、Apache服务器等相关知识,利用Python语言的便于快速开发的特性及MVC设计思想, 设计一个博客博文管理方案,模拟一个博客系统。2.1.1安装Apache由于使用的操作系统是Linux,需要安装 Apache。2.1.2安装和配置Apache1从RHEL6系统光盘中获得软件包:在shell下执行:ls /media/cdrom/Server | grep httpd找到后直接rpm安装2. 安装后的主要目录与文件服务目录:/etc/httpd/主配置文件:/etc/httpd/conf/httpd.conf网页目录:/var/www
19、/html/服务脚本:/etc/init.d/httpd执行程序:/usr/sbin/httpd访问日志:/var/log/httpd/access_log错误日志:/var/log/httpd/error_log2.1.3安装、配置Python安装Python后,运行Python,就会进入Python交互模式,如下图2-3 图2-3 .Python交互模式图2-4 .配置Python2.1.4 安装Django首先要下载Django安装包,在Linux的shell模式下解压后,进入,执行下面的语句:3系统分析3.1开发背景Python程序设计语言在是今年来开始流行的一种编程语言,它以其简单易
20、懂、适合于快速开发、能够跨平台操作吸引了人们的兴趣。事实上,Python的目前的地位是无法和Java、C等相比的的,但就发展前景而言,它确实独一无二的。它是一种完全可信赖的程序设计语言,在国外十分的流行,就目前而言,国内也开始逐渐认识它。其固有的可靠性与安全性不仅令程序员放心,也令使用程序的用户放心。Python内建了对网络编程,数据库连接、多线程等高级程序设计任务的支持。目前,在软件开发活动中,无论何种服务,应用系统的开发仍然是开发的主题,博客管理系统就是这样的应用系统。用户希望能够发表一下个人的想法,对各种言论进行评论等,这时就用到了博客。3.2系统功能需求分析一个好的系统,不仅包括前台的
21、美观同时后台的优化也很重要,本系统运用Django+Bootstrap构架与MVC设计思想,用户可以完成用户注册、登录、注销、修改密码、发表博文、评论、删除博文、查看精华博文、搜索博文等功能,管理员具有对用户的信息进行修改、删除的功能,同时能够做到对博文的管理。本系统会根据用户的访问一篇博文次数,进行点击量的记录,从而形成精华帖。用户可以创建分类,同时在该分类下发表博文,同时设置了背景音乐。3.3需要实现的功能及功能模块3.3.1 用户注册用户登录是一个网络系统必需的功能之一,用户想要使用系统提供的功能,就必须先拥有一个帐户,从而拥有自己的博客。因此要到系统中注册一个帐户,用户在注册时系统要求
22、用户输入注册信息,包括用户名,密码,确认密码(用户编号自动增长),用户E-mail、以及用户头像等,如果用户帐户已经存在或者用户输入的信息格式不正确系统将向用户显示相应错误的提示信息,并提示用户使用其他的用户帐户或者输入正确的信息,注册完以后,可以进行登录。3.3.2用户登录注册成功后,用户可以使用刚刚注册的账户登录到系统,登录页面要求用户输入用户名和密码。在输入用户名和密码之后,系统将验证用户帐户和密码是否正确,如果验证成功,就会弹出一个登陆成功的框,并跳转到用户的空间界面。否则,系统弹出一个显示用户帐户或密码错误的提示信息的框。3.3.3修改用户密码用户只有在登陆成功后才可以修改密码,用户
23、能够知道旧密码。在修改密码界面,用户需要输入旧密码、新密码和确认新密码,只有当旧密码正确,两次输入的新密码相同时,用户才能够进行修改,同时跳转界面;否则系统将显示错误信息。3.3.4查看用户当用户进入首页时,系统会提供可能认识的人,点击后可以进入该用户的博客。3.3.5查看博文用户可以点击一条博文的title进行详细的查看该博文的内容,在查看界面,登陆用户可以静心留言,匿名用户无法留言。3.3.6发博文用户成功登录之后,可以发博文。点击发博文按钮后,进入发博文界面,用户需要填写标题、内容,同时选择分类,点击发表即可发到自己的博客上。在发表页面,分类后有一个添加分类,用户可以在此添加分类。3.3
24、.7查看个人信息用户登陆后可以查看自己的用户信息。3.3.8 删除博文用户登陆后可以在自己的博客中删除自己希望删除的博文,直接点击标题后的删除链接即可。3.3.9 评论用户登陆后可以对别人的博文进行评论。3.3.10 注销由于某种原因,用户可以退出该系统的登陆。3.4系统流程分析本网站是一个博客网站,实现了用户的发博文、评论博文的功能。前台主页,包括用户首页,用户注册页面,用户修改信息页面,用户个人博客页面、精华帖页面、博文详细内容页面。后台控制,运用Django框架,用户注册后,保存用户的信息;登陆成功后,用户能够发表博文、评论等。3.4.1系统的功能图本系统的功能图如图所示:博客登录注册查
25、看个人信息 修改密码听音乐安全退出系统用户登录成功管理员登录删除博文评论博文发表博文查看博文查看用户信息修改用户信息用户管理管理员登录删除用户添加音乐管理用户博文图3-1 系统功能图3.4.2系统的用例图查看个人信息发博文评论搜索博文修改密码3.4.3系统的流程图开始注册YYYAdminUserY登录普通用户主页面管理员主页面安全退出身份判断图3-3 系统流程图4系统设计与实现4.1数据库设计用户博文评论分类4.1.1 角色分析通过功能我们找到了四个角色,接下来就该分析各各角色之间的关系。在这里我们首先要分析出博客应该是以用户为主的,用户登陆进入自己的博客,显示自己的博文,所以是通过用户找到的
26、博文,以用户为主,同时分析出用户与博文之间是多对多的关系。博文与分类是以分博文为主的,博文与分类之间是多对一的关系。博文与评论之间是一对多的关系,大家都是先看博文再看评论,所以以博文为主。分类与评论之间没有关系。4.1.2 数据库建表(models中创建的表)4.3系统前台设计 (1)系统首页:(2)用户注册: (3)用户登录界面 (4) 用户修改密码 (5) 用户发博文(5) 查看博文(6) 音乐播放器4.4部分功能代码4.4.1 用户博客注册 def regist(request): 注册用户 if request.method = POST: rform = RForm(request.
27、POST) rimg = UserAnother(request.POST, request.FILES) if rform.is_valid() and rimg.is_valid(): username = rform.cleaned_datausername password = rform.cleaned_datapassword email = rform.cleaned_dataemail headimg = rimg.cleaned_dataheadimg user = User.objects.create_user(username=username, password=pa
28、ssword, email=email) UserProfile.objects.create(user=user, headimg=headimg) user.save() return HttpResponseRedirect(/login/) else: rform = RForm() rimg = UserAnother() context = request:request, rf:rform, rg:rimg return render_to_response(regist.html, RequestContext(request, context)4.4.2显示博文详细内容def
29、 show_blog(request, username, blog_id): flag1 = user = request.user blog = Blog.objects.get(id=blog_id) blog.hitcount += 1 blog.save() if request.method = POST: txt_ly = request.POST.get(liuy) if txt_ly: lmg = LMsg.objects.create(content=txt_ly, time=datetime.now(),user=user) blog.lmsg.add(lmg) blog
30、.save() else: flag1 = 留言不可为空! blog_user = User.objects.get(username=username) if user.is_authenticated(): flag = True else: flag = False lmsg = blog.lmsg.all() return render_to_response(show_blog.html, RequestContext(request, request:request, blog:blog, lmsg:lmsg, blog_user:blog_user, flag:flag, fla
31、g1:flag1)4.4.3分页的实现def paging(request, list1, n): paginator = Paginator(list1, n) try: page = int(request.GET.get(page, 1) except KeyError: page = 1 try: list2 = paginator.page(page) except (EmptyPage, InvalidPage): list2 = paginator.page(paginator.num_pages) return list25总结与展望此次毕业设计是以Python语言为基本开发语
32、言,通过运用Django框架(版本1.4),Bootstrap,JQuery,Sqlite3等相关知识,利用Python语言的面向对象的特性及MVC设计思想, 设计一个用户管理方案,模拟一个电影院售票管理系统。在完成毕业设计的过程中不断的遇到问题解决问题的循环过程中完成的,就是在这样的过程中,我才不断的学习新的知识;我才更好的、灵活的运用这些技术,并且通过向老师,同学以及从事相关工作的人的交流,让我的思路,思维更加开阔。通过这次的毕业设计,让我对于以前所学的知识能够做到更好的运用。总之,本次设计加强了我的独立学习和运用知识解决实际问题的能力,也是对我这几年以来在学校系统学习的基础理论课程、专业
33、知识及基本技能的一次全面的检验,并且达到了巩固、扩大、深化所学的专业技术的目的,使自身的研究、实践能力得到了一定的提高。6参考文献1.Magnus Lie Hetland著 Python基础教程 人民邮电出版社2.Wesley J. Chun著 宋吉广译 Python核心教程 人民邮电出版社3. Bootstrap 参考网址:http:/twitter.github.io/bootstrap/;4. Django Document 参考网址:5.陶国荣著 JQuery权威指南 机械工业出版社6. Jack著 Django Book 人民邮电出版社致谢在历时半年的毕业设计中,要感谢我的指导教师李阅历老师,从本次设计实现的基本功能到设计中遇到的问题,都离不开老师的教诲帮助和严格的要求,这样我才顺利达到了设计的要求。当然这与学校提供的优越的环境,完善的设备和同学之间日益加深的默契和团队精神分不开。正因为此我才顺利地完成了这次毕业设计,同时也从中获益匪浅。在此衷心地感谢所有关心本次毕业设计和实现的老师和同学,能够给我这次学习和交流的机会。同时向关心和支持我学习的所有曾帮助过我的老师、同学和朋友们表示真挚的谢意!感谢他们对我的关心和支持!最后谨向我的论文评阅人、答辩委员会的各位老师表示最真诚、最衷心的感谢!
限制150内