周二快乐,列表各位。
这篇文章总结一下这些天了解Flask框架顺便架设的一个小Blog网站系统,功能主要实现了用户注册和登录,博文发表,基本社交(关注与取关),邮件通知,编辑用户资料等功能。
参考资料为下面链接的文章:
https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
有兴趣的同学可以看原文然后自己架设一个网站。
网站源码放在了文章末尾,有需要的同学可以下载。
记录一下网站的实现细节,这样以后可以不用重复造轮子了。
这是项目的目录
templates文件存放网站的模板文件,因为flask框架仍然是使用的mvc模型(model-view-control),需要html模板文件渲染网站。
__init__.py为初始化文件,所有引用包和初始化函数存放于此。
email为发送邮件模块,forms为表单模块用以定义Flask的表单函数(其实也可以自己定义表单,但是使用flask form库方便些,不需要造轮子),models顾名思义就是model函数模块了,主要存放了数据库的表名,行名等,routes为视窗函数,定义url修饰函数和行为。run函数用来运行项目。 config文件存放了邮件发送人的相关信息,数据库连接地址等。
然后就是各种功能的实现。根据页面浏览网页的顺序依次总结。首先是登录界面如图所示。
实现函数如图所示
其中,login()函数的第一行,current_user指代当前登录的用户,is_authenticated为是否登录属性,如果为真,跳转主页。这两行代码是为了方式用户已经登录的条件下进行重复登录。
然后就是表单代码了,具体实现思路就是构造两个输入框接收数据,细节代码写在html界面了不累述。
若用户账号密码验证成功,则运行login_user(login模块内置)函数进行登陆,并输入remember_me数据(用户自行选择是否记住登录状态)。
登录后界面如图所示。
这里我们看到了自己发的博文,不着急这个功能我们稍后在总结。首先是欢迎语Welcome+username,这个通过html加login模块实现的,html代码如图。
这里使用login模块的好处就显现出来了,一旦用户登录,current_user变量会自动赋值登录的用户变量,我们提取nickname元素,即可显示用户姓名。
下面有一个post发送博客的功能,想一想,主要实现思路是什么呢。应该是html界面设计一个输入框收集用户数据,然后视窗函数判断数据并将输入的数据存储到数据库的该用户列表的Post变量中。
具体代码实现如图
首先是@修饰函数定义路由地址为主页或者index目录,这样用户访问网站或访问index目录都会跳转下面定义的函数方法。
@login_required是login库的一个函数,定义主页页面必须满足用户登录的条件才能显示。
然后给form变量赋值PostForm()方法,这个方法定义了两个变量如图所示
post变量为String类型,DataRequired()方法意思是这个值必须有输入有数据,否则不能进行。submit则为按钮。
下面则为从数据库中提取博文。如图所示
对于功能我们有两个要求,一个是显示发送博文的用户名,另一个是根据时间顺序进行排列。代码实现如下。
filter过滤器过滤只显示用户关注的人的博文(具体关注功能太繁杂暂略),order by方法使数据按照时间顺序排列。这个查找语句会返回一个数据集,而在html中代码中,将post赋值上述查询语句,然后执行如下代码
这样就简单的实现了显示关注用户博文的功能。
点击导航栏的个人信息页面,可以看到如下图的界面
显示用户关注了多少人和被多少人关注,而用户自己发送的博文则在页面下方显示。这里面在讲细节可能导致篇幅过大,主要思路是,用户个人信息页,通过url后面的用户名称参数确定用户姓名,然后通过数据库查询(MySQL)的方式,分别显示用户姓名,用户个性签名,用户最后登录时间等。通过辅助表来统计用户关注他人数和被他人关注数。而下面的用户博文则根据用户姓名,输入该用户名的过滤条件直接显示用户名为xxx的所有博文即可。
下图为用户修改个人信息页
具体代码实现如下图所示。
最后是关注和被关注功能,当用户进入其他用户主页的时候,可以选择关注与取关这个用户,如图所示。
关注用户函数写在了模型函数中,主要思路是通过数据库建立辅助表,如用户1关注了用户2,则建立1链接2的关系,从而实现关注功能,取关则删除该关系。
注意,关系功能为单向,并不意味着双方互相关注。具体代码细节请关注源文件吧。
最后是邮件发送功能,主要思路是通过邮箱的smtp功能发信,当用户1关注用户2后,向用户2的邮箱发送关注成功的信息。配置信息如图
这里需要自己申请一个邮箱作为发信息邮箱,在相应的地方填写自己的邮箱账号和密码就可以了。测试之后发送邮件成功,如图所示。
网站最后需要使用bootstrap修饰一下,不得不说Bootstrap真的对不懂前端的用户很友好,附上使用前和使用后的对比图
使用前
使用后
使用前
使用后
使用前
使用后
使用前
使用后
至此一个blog+简单社交的网站的模型就构造成功了,利用Python的Flask框架构造网站确实感觉比php建站更难一些,而且有框架尚且如此,直接用python建站的大牛更是遥不可及。不过正所谓无限风光在险峰,从当初的html静态页面,再到php,js动态页面,再到现在pythonweb,node,go等多种建站方式,一招鲜已经不适合现在的时代了,进步的同时拥抱变化才是比较合适的心态。
最后祝大家心明眼亮,再见。
网站的源码链接
链接:https://pan.baidu.com/s/1-7gzKUDGkIbsT2VZ1FGVDg 密码:omy8
领取专属 10元无门槛券
私享最新 技术干货