大型软件实验周
课程设计说明书
题目: 个人博客网站的搭建
2019年 5 月 20 日
目录
中北大学信息商务学院 1
大型软件实验周 1
课程设计说明书 1
一、 目的 3
二、 设计任务 3
三、 概要设计 4
3.1博客网站流程图 4
3.2 博客网站设计模式——MTV模式 5
3.3 博客网站功能模块 6
四、详细设计 7
4.1 数据库设计 7
4.2 项目实现 9
4.3 具体体现 13
五、测试 14
5.1 后台管理登录 14
5.1.1 用户登录 14
5.1.2修改用户 15
5.1.3修改登陆用户 16
5.1.4修改登录密码 16
5.2 MYBLOG管理 17
5.2.1增加文章 17
5.2.2删除文章 17
5.2.3 修改文章 18
5.3评论管理 19
5.4 标签管理 19
5.4.1 增加标签 19
5.4.2 修改标签 19
5.4.3 删除标签 20
5.5 前台页面设计 20
5.5.1 首页设计 20
5.5.2 博文设计 21
5.5.3 评论设计 22
六、 总结 22
一、目的
通过对Python语言、SQLite数据库、Django框架、软件工程的理论知识学习,并结合软件开发流程完成应用软件开发。本次课程通过使用PyCharm作为软件开发IDE,以达到充分熟悉软件开发平台目的。同时掌握软件开发的一般过程,软件生命周期和作为一个开发人员应该具备的基本能力,并撰写实习报告。使学生进一步巩固所学理论知识,同时提高观察问题、分析问题、解决问题的能力。
二、设计任务
博客系统是以博客发布,博客展示,评论管理为主要功能的网站,提供了包括图文一体的文章展示功能,是基于Django框架的信息服务类系统。主要包括前台博客显示与后台管理两大部分,涉及到的功能有分类管理、标签管理、文章管理,评论管理等主要模块,系统使用MVT模式开发,涉及到的技术有模型设计、视图逻辑、模板标签、数据库访问等。主要实现以下功能:
1、数据库模型:使用数据库存储博客文章、分类、标签信息。
2、后台管理系统:用户可以使用后台管理界面对博客文章、分类、标签进行管理。
3、博客首页:用户可以查看博客首页内容,可以通过分类进行筛选。
4、文章发布:用户使用后台发布博客文章,文章编辑采用富文本编辑器。
5、文章列表:用户能够查看所有博客文章及最新发布文章、可以通过分类、归档、标签云筛序文章,分页查看文章列表。
6、博客详情:用户能够查看博客详细内容,包括文章封面、题目、作者、内容、浏览量、更新日期等信息。
7、博客评论:用户能够查看博客评论信息,可以对博客,文章进行评论。
8、评论优化:在模型中指定排序,完善跳转链接,显示正确的评论量。
9、分类优化:可以看到各分类下的文章数。
10、博客浏览:显示出浏览量。
三、概要设计
3.1博客网站流程图
后台业务流程图 前台业务流程图
3.2 博客网站设计模式——MTV模式
客户浏览器的请求先达到url.spy中,在urlpatterns列表中寻找相应的路径(通过正则表达式进行匹配),通过路径找到views中对应的函数或方法,然后将请求提交给views中进行处理,views通过从models获取到数据,并通过数据将templates中的页面渲染,并响应给客户端。
Model
模型
View
视图
Templates
模板
Url
控制器
客户端浏览器
① 客户端浏览器<——>url控制器:request(get,post)
② url控制器<——>view视图:通过URL中匹配到的字符串,调用view中的方法处理业务逻辑
③ Models<——>view视图:从模型中获取数据,进行业务处理,对数据进行读写。
④ View视图——>templates模板:用数据对templates中的静态页面进行渲染加载,生成动态页面。
⑤ templates模板<——>客户端浏览器:将生成的页面响应给客户浏览器。
3.3 博客网站功能模块
此系统主要包含两个方面,一为前台信息显示系统(即普通游客空间)、二为后台信息管理系统(即管理员管理空间)。前者是面向公众的一个窗口,通过前台信息显示系统,方便普通游客浏览博文和评论。后台信息管理系统在管理员登陆后,管理员可以发表博文;回复评论,管理博文,评论及个人信息等。
普通游客模块:主要是为了让访问本博客的游客对博客有一个基本的了解。通过游客的评论了解游客对本博客博主博文的评价,以便于同博主更好的互动和交流。
博客管理员模块:主要实现对所发表的博文,评论信息进行管理,对博客各个方面的管理与维护以便网站更好的运行。其中管理模块的功能有:
MYBLOG管理:管理员对博文进行分类、添加和删除博文等操作。
认证和授权:对管理员进行密码账号认证,管理员可以授权用户访问后台。
最近动作:管理员对博客进行的最近的操作。
标签信息:管理员可以对标签进行添加和删除等操作。
分类信息:管理员可以对分类进行添加和删除等操作。
文章信息:管理员可以对文章标题、封面、内容、创建修改时间、分类
作者来进行添加、修改和删除等操作。
四、详细设计
4.1 数据库设计
本系统采用SQL Server作为开发工具。根据系统需求分析和保证数据统一、完整、高效的原则,需要对数据库进行合理的设计。使用sqlite查看db.sqlite3。
生成Sql语句:python manage.py makemigrations;同步数据库:python manage.py migrat;设置mysql数据库数据库版本:mysql 5.6;使用Navicat新建数据库,注意字符集utf-8;配置数据库(settings.py);安装mysql库:···\ mysitet >pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
配置mysitet下的__init__.py
import pymysql
pymysql.install_as_MySQLdb()
同步数据库
···\mysitet>python manage.py makemigrations
No changes detected
···\ mysitet >python manage.py migrate
System check identified some issues:
…
用 Django 的方式操作数据库
修改了models.py中的字段后,重新迁移数据库(生成sql语句+同步数据库)
python manage.py makemigrations
python manage.py migrate
4.2 项目实现
Django博客首页视图
Django 处理 HTTP 请求
Web应用交互过程:
Django作为Web框架,主要完成第三部分工作,需要考虑以下工作:
如何接受HTTP请求、如何处理HTTP请求、如何返回HTTP响应
Django 工作机制
用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls.py。 当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request),最后该view函数负责返回一个HttpResponse对象
使用模板系统
服务器一般会给浏览器返回很多内容,我们不能能每次都把这些大段大段的内容传给HttpResponse
Django 对这个问题给我们提供了一个很好的解决方案,叫做模板系统。Django 要我们把大段的文本写到一个文件里,然后 Django 自己会去读取这个文件,再把读取到的内容传给 HttpResponse。
Django Admin 后台发布文章
Django 为我们提供了 Admin 后台,可以直接用来发布我们的博客文章
访问博客后台(http://127.0.0.1:8000/admin/)
如果没有用户先创建超级管理员:python manage.py createsuperuser
Admin 后台注册模型
优化Admin后台显示
实现博客首页视图
放置静态页面
将提供的博客静态页面放到模板目录下、访问网页,发现静态文件不能正确加载
处理静态页面
在博客应用目录下先创建static文件夹,再创建建立一个 myblog 文件夹,最后移动css/js/img文件
修改模板设置文章
只保留一个figure标签,其他的删除、for 循环遍历文章、修改模板标签
修改首页视图 图片显示配置 首页视图配置分类实现博客详细页面 编写 detail 视图函数 设计详细页面的url
编写详情页模板 模板继承 优化:富文本编辑器的嵌入 Ueditor使用步骤 Safe标签 页面侧边栏:使用自定义模板标签
模板标签的解决思路
定义类似于与 {% static %} 、 {% for %} {% endfor%} 的模板标签,思路: {% get_recent_posts as recent_post_list %},那么模板中就会有一个从数据库获取的最新文章列表,并通过 as 语句保存到 recent_post_list 模板变量里,通过 {% for %} {% endfor%} 模板标签来循环这个变量。
模板标签目录结构
在myblog 应用下创建一个 templatetags 文件夹
文件夹下创建一个 init.py 文件(使得这个文件成为一个python包)
在 templatetags\ 目录下创建一个 blog_tags.py 文件
编写模板标签代码 最新文章模板标签
归档模板标签 分类模板标签 使用自定义的模板标签
实现博客列表页面
修改日月
4.3 具体体现
五、测试
5.1 后台管理登录
在后台管理中需要有一个登录的页面,只有进行登录并通过身份验证的用户,才可以在个人博客页面发表博文,并借助个人设置实现对个人博文相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表博文,更不允许对博客页面信息进行管理维护。
D:\PY–Anaconda\python.exe E:/PycharmWorkspace/mysite/manage.py runserver Performing system checks…
http://127.0.0.1:8000/admin/ Django version 1.11, using settings ‘mysite.settings’
Starting development server at http://127.0.0.1:8000/
5.1.1 用户登录
5.1.2修改用户
5.1.3修改登陆用户
5.1.4修改登录密码
5.2 MYBLOG管理
5.2.1增加文章
5.2.2删除文章
5.2.3 修改文章
在点击“文章信息”后面的“修改”之后进入页面选择你要修改的博文进行修改。最后保存(即把修改的内容添加到了数据库中)
5.3评论管理
普通游客在浏览网页时,可以进行评论操作。
5.4 标签管理
5.4.1 增加标签
首页中的“标签信息”后点击“增加”,出现第二图片,“Name”框中添加标签名字,最后选择你要进行的操作。
5.4.2 修改标签
首页中的“标签信息”后点击“修改”,出现第二图片,选择你要修改的标签进行修改,修改完成之后保存。
5.4.3 删除标签
在修改标签的基础上进行删除。
5.5 前台页面设计
5.5.1 首页设计
5.5.2 博文设计
5.5.3 评论设计
六、总结
python manage.py runserver 调用这个功能,就可以启动我们的开发服务器了,然后在浏览器中输入http://127.0.0.1:8000/。
在这次的设计中,我进一步认识了数据库与程序设计语言的设计过程以及设计各阶段所做的工作和要注意的细节部分,我了解了一个网站形成的基本过程和基本纲领框架,加深了我对动态网站的认识,相信这些知识都将对我的学习带来很大的帮助。这次涉及个人博客网站,对我来说是一个将所学知识从书本运用到实践操作的一次宝贵体验。一味的啃书并非是好的。只有把理论与实践结合在一起,才能更快的进步,学到更多的知识。这次设计我意识到将旧知识和新知识结合的必要性,学会了如何思考和解决问题的方法。希望在今后的努力中能做出更完善的设计。