19.设置服务器端Session【番外】

2018-02-10
阅读 3 分钟
4k
在11.保存登录状态与注销功能这篇文章中,我们使用了session来保存username,实际上Flask默认的session功能,是客户端session(client-side session),与之相对的是服务器端session(server-side session)。简单来说,这里的客户端session是将username加密后,以cookie的形式返还给客户端,客户端后续访问网站就携带着这个...

18.上传文件限制和使用富文本编辑器【完结篇】

2018-01-26
阅读 4 分钟
3.8k
本文是后端开发——Flask初体验专栏的最后一篇文章,整个Q&A demo的简单框架其实已经建立起来了,现在就是再优化、完善一些细节。本文首先完善一下前文上传头像的部分,增加上传文件的大小和格式限制,其次把发布问答部分中,问题的详细描述部分从普通的textarea修改为富文本编辑器TinyMCE,这样可以在问题描述中添加...

17.上传和修改头像

2018-01-24
阅读 3 分钟
5.7k
上传文件,需要使用到html的input控件,其type为file。Boostrap提供了一个美观且功能强大上传控件,样式如下: 它提供文件的预览,并且自带remove和upload按钮。要使用这个控件,需要再额外引入相应的js和css文件,如下: {代码...} 上传控件的html代码如下: {代码...} 我把data-show-preview设置为false,关闭了上传文...

16.设计和实现用户中心、修改密码功能

2018-01-23
阅读 2 分钟
7.2k
现在我们来设计一个用户中心的页面,显示用户相关的信息,由于我们的Q&A demo比较简单,所以显示的内容也不用太多,我们来显示用户的头像、注册时间、发表的问题数和评论数,设计一个user.html,界面如下:

15.搜索功能的实现与页面倒计时跳转

2018-01-21
阅读 3 分钟
4.3k
我们的导航条有搜索输入框和按钮,现在我们来完善这部分功能。首先搜索的逻辑,我们简单地设定为问题的title或者content包含搜索的关键字即可。假设搜索的关键字存在变量keyword里,那么获取所有符合搜索逻辑的question的代码如下:

14.问题详情页面以及添加评论

2018-01-21
阅读 4 分钟
1.8k
问题的详情页都使用一个名为'details.html'的模板,其网址我们设计成'/details/<question_id>/'的形式,这时候我们可以用到一开始提到过的url传参,编写对应的视图函数如下:

13.首页内容展示

2018-01-20
阅读 3 分钟
2k
发布问答界面与功能以及完成了,我们要把用户发布的内容在首页展示出来,逻辑也是很简单,在请求home.html的时候,从Questions中获取所有的数据,在home.html中使用for循环将每一个对象的内容写上去。将home视图函数改写如下:

12.发布问答界面设计及before_request钩子函数

2018-01-19
阅读 3 分钟
2.5k
我们现在开始设计发布问答的界面与功能: 现在点击它还是没有反应的,我们要设计一个问答界面的html,然后把发布问答链接过去。首先编写一个视图函数如下: {代码...} 在base.html中为发布问答添加链接: {代码...} 问答页面的html首先也要继承导航条,然后主要界面设计如下: 这里还是利用css加Bootstrap样式完成的,问...

11.保存登录状态与注销功能

2018-01-18
阅读 2 分钟
5.6k
目前我们的demo已经完成了注册和登录功能,当登录成功之后,页面跳转到首页,此时我们需要保存用户的登录状态,不管页面如何跳转,除非用户自己注销登录。

10.注册和登录功能实现(3)—— 注册数据写入数据库

2018-01-17
阅读 3 分钟
4.7k
现在数据获取到了,提示也有了,我们需要把注册的数据写入到数据库,这一步很简单,直接使用之前提到过的方法,但是我们不能直接把明文密码写入到数据库中,那样做是十分不安全的,我们需要将其加密之后再写进去,具体是用到werkzeug.security中的generate_password_hash这个函数,将字符串变成hash值。我们可以在User模...

9.注册和登录功能实现(2)—— 注册与登录的错误提示

2018-01-17
阅读 5 分钟
6k
在注册和登录功能实现(1)中,我们已经获取到了页面POST过来的登录或者注册数据,接下来我们需要与数据库中的数据做验证,验证通过才能登录或者注册。我们平时在登录网站时,如果输入的用户名或者密码错误,有的网站是在登录框附近提示错误,也有的是跳转到一个页面提示出错,并经过几秒倒计时再返回原来的页面。我们在...

8.注册和登录功能实现(1)—— 页面设计和获取POST数据

2018-01-15
阅读 4 分钟
6.2k
在导航条中,右侧有登录和注册两个链接,储存用户数据的Users模型也有了,现在我们来实现登录和注册的功能。先来看注册功能的实现,新建一个视图函数,如下:

7.ORM与SQLAlchemy (3) - flask-migrate数据库迁移

2018-01-14
阅读 2 分钟
7k
在上一遍文章中,我们增加了两个模型Questions和Comments,并为Users增加了avatar_path这个字段,然后通过这段代码更新到数据库:

6.ORM与SQLAlchemy (2) - 模型关系与引用

2018-01-13
阅读 3 分钟
3.6k
承接上文,我们的Q&A demo,除了用户表,还需要存储所有问题内容的表questions_info和存储所有评论的表comments_info,并且都和users_info通过外键来关联。我们不排除后续需要更多表的可能性,把所有模型和视图函数写在一起看着也太混乱了!为此,我们新建一个models.py,把三个模型都放在这里。

5.ORM与SQLAlchemy (1) - 建立第一个模型

2018-01-13
阅读 3 分钟
5.4k
后端一个重要的点就是与数据库联系,例如网页的注册、登录,内容的更新等都需要与数据库建立关系。以MySQL数据库为例,平时我们会用mysqldb(python 2)或者pymysql(python 3)去操作MySQL数据库,但这种方法也是需要自己编写SQL语句的。现在我们有了ORM模型,简单来说,ORM是把数据库中的表抽象成模型,表的列名对应模型的...

4.模板的继承及Bootstrap实现导航条

2018-01-12
阅读 6 分钟
8.6k
在建设一个网站的时候,不同的页面有很多元素是一样的,比如导航条、侧边栏等,我们可以使用模板的继承,避免重复编写html代码。现在我们打算实现一个在网页上方的导航条,并在所有的页面中继承这个导航条。导航条的建立,我们直接使用Bootstrap提供的如下导航条的样式。

3.render_template渲染模板及jinja2

2018-01-12
阅读 3 分钟
21.1k
我们之前的视图函数,返回的都是简单的'Hello Wolrd'之类的字符串,怎么返回一个html呢?首先我们在templates文件夹建立一个html文件,内容随便写一点如下:

2.反转函数url_for与重定向redirect

2018-01-11
阅读 1 分钟
10.3k
在hello_world函数中使用print(url_for('index')),将会打印出/index/。有传参的视图函数怎么办?同样将函数名字符串作为第一个参数,将参数以key=value的形式写在后面,如:

1.第一个Flask程序、DEBUG模式及URL传参

2018-01-11
阅读 3 分钟
10.6k
我们打开PyCharm,新建一个Project,在左侧选择Flask,右侧Location可选择项目存放的位置,Project Interpreter选择使用的编译器,我们当然可以选择已经安装在电脑上的Python 3.6,但我建议选择使用Virtualenv来建立一个虚拟的环境,这样在虚拟环境里安装包之类的,不会影响电脑上本身已经装的,并且后续如果项目较多的...