董云影 张红
摘 要:随着网络时代的发展,用户参与互联网的行为不再局限于浏览,更多的人希望自己也能成为互联网的发布者,博客能让个人在Web上表达自己的心声。博客体验不仅是在Web上发布自己的想法,而且还包括获得其他用户的反馈并与其交流。博客可以让来自世界各地的网站读者就博客上的共享内容提供反馈意见,可以选择是否允许按帖子发表评论。本文是在熟悉MySQL开发环境基础上,结合Django开发出的一套基于Python的个人博客系统。博客系统的基本功能包括用户注册和登录、用户管理、发表博文、删除博文、评论以及搜索博文等。
关键词:博客;Python;MySQL;Django
1 前言
“博客”(Blog或Weblog)一词源于“Web Log(网络日志)”的缩写,是一种十分简易的傻瓜化个人信息发布方式。让任何人都可以像免费电子邮件的注册、写作和发送一样,完成个人网页的创建、发布和更新。如果把论坛(BBS)比喻为开放的广场,那么博客就是你的开放的私人房间。可以充分利用超文本链接、网络互动、动态更新的特点,在你“不停息的网上航行”中,精选并链接全球互联网中最有价值的信息、知识与资源;也可以将你个人工作过程、生活故事、思想历程、闪现的灵感等及时记录和发布,发挥您个人无限的表达力;更可以以文会友,结识和汇聚朋友,进行深度交流沟通。博客的不同层次的杠杆效应共同作用,会形成网络新经济大爆发的全新景象。结合编程语言,开发个人博客系统可以很方便的管理自己的博客,在技术层面来说具有扩展性和灵活性。
2 Python的发展
1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。但这些语法规定让Python容易读。另一方面,Python聪明的选择服从一些惯例,特别是C语言的惯例,比如回归等号赋值。Guido认为,如果“常识”上确立的东西,没有必要过度纠结。Python从一开始就特别在意可拓展性。Python可以在多个层次上拓展。从高层上,你可以直接引入.py文件。在底层,你可以引用C语言的库。Python程序员可以快速的使用Python写.py文件作为拓展模块。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.so文件引入到Python中使用。Python就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更改。最初的Python完全由Guido本人开发。Python得到Guido同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。Guido和一些同事构成Python的核心团队。他们将自己大部分的业余时间用于hack Python。随后,Python拓展到研究所之外。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员,Python开始流行。
3 基于Python的博客设计
对于Python的发展,更多的涉及数据分析和人工智能领域,此博客系统是基于Python基礎语言和互联网开发设计的,可以在博客系统中添加智能算法,根据浏览的内容不同和浏览人群的统计,来计算一篇博文可能会吸引什么样的读者类型,也可以给不同的读者推送不一样的文章,甚至预测一篇博文的点击量以及可能会带来怎样的社会影响。而博客数据库部分主要是MySQL完成,MySQL最早由瑞典MySQL公司开发的一个关系型数据管理软件(DBMS),经过10多年的发展,功能更加强大完善。MySQL提供完整的结构化查询语言,如select,delete,insert,update等语句,此外,通过最新的workbench图形化编辑管理系统,可以对数据库提供更加高效直观的开发体验。通过对博客系统的功能需求分析,根据需求,可以大致构建出所需要的数据库关系图标。博客系统模块比较多,根据不同模块,首先来设计数据库的表。一般来说,一个表存储一个实体或者对象的相关信息,这样在开发过程中,对数据库操作就相对容易。对于不同的对象或者实体,可以更具系统需要逐渐扩展,另外,不同的扩充信息和动态变化可分开放在不同的表里。重要的表设置唯一标识的主键,该主键不存储实际运用中的任何信息,只用来唯一标识一个数据。最后不断测试,调用Python不同模块,完成个人博客的搭建。个人博客系统相对来说更灵活,可以自己更改样式,不断完善,结合CSS特效以建立具有个人风格的博客。
参考文献
[1]Paul Barry.Head First Python[M].南京:东南大学出版社,2011.
[2]Zed A.Shaw.Learn Python the Hard Way[M].北京:人民邮电出版社,2014.
[3]Mark Lutz.Learning Python[M].北京:机械工业出版社,2011.
[4]Wesley Chun.Python core Programming[M].北京:人民邮电出版社,2008.
[5]Micha Gorelick and Ian Ozsvald.High Performance Python[M].北京:人民邮电出版社,2017.
[6]Julien Danjou.The Hacker's Guide to Python[M].北京:人民邮电出版社,2015.
[7]Faruque Sarker.Python Network Programming Cookbook[M].北京:人民邮电出版社,2014.
[8]Leif Azzopardi.Tango with Django[M].北京:人民邮电出版社,2015.
[9]David Cochran.Bootstrap Site Blueprints[M].北京:人民邮电出版社,2015.
[10]Eff Forcier and Paul Bissex.Python Web Development with Django[M]. 北京:机械工业出版社,2009.
[11]Adam Freeman.The Definitive Guide to HTML5[M].北京:人民邮电出版社,2014.
[12]Jeremy D. Zaw.High Performance MySQL[M].Beijing:O'Reilly Media,2004.
[13]董伟明.Python Web开发实战[M].北京:电子工业出版社,2016.
[14]张志强,赵越.零基础学Python[M].北京:机械工业出版社,2015.
[15]张颖,赖勇浩.编写高质量代码:改善Python程序的91个建议[M].北京:机械工业出版社,2014.
[16]杨佩璐,宋强.Python宝典[M].北京:机械工业出版社,2014.
[17]王友钊,黄静.Django开发宝典[M].北京:清华大学出版社,2016.
[18]曹刘阳.编写高质量代码[M].北京:机械工业出版社,2010.
[19]林小志.CSS那些事儿[M].北京:电子工业出版社,2009.
[20]王冉阳.基于Django和Python的Web开发[D].北京:中国地质大学,2009.