Flask系列

Posted Program编程者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask系列相关的知识,希望对你有一定的参考价值。

上次,我们创建了一个最简单的“Hello world!”程序,可是,我们总不能把整个页面写死在代码里吧!


/1、储存页面/

首先,让我们新建一个文件夹,名为templates(注意,一定是这个名字,不能改变!),这里,就是我们储存页面文件(html)的地方,文件名字随意。这里,我们就创建一个名为“hello.html”(关于html可以看和)的文件,在里面写入:

<p>Hello</p>

作用很简单,就是显示“Hello”,那我们要如何渲染它呢?


/2、显示页面/

为了显示页面,我们还要导入一个新的函数——render_template,为此,在开头加上:

from flask import render_template

对的,字面意思,就是渲染用的,使用方法:

把之前代码的

...return "Hello"


改成

return render_template("hello.html")

它会自动找到文件夹中的hello.html


/3、显示变量/

显示页面,总不可能只是显示一个固定的字符串吧?render_template支持显示变量。现在,把hello.html写成:

<p>{{string}}</p>

{{string}}就是声明string是一个变量,然后,把return语句改成:

return render_template("hello.html", string="Hello")

现在,程序会自动把string替换成Hello,

打开127.0.0.1:5000,会看见Hello字样


/4、分析URL/

我们修改后的代码,虽然成功渲染了HTML,可是本质上还是写死的,这时,我们就要从URL中获取信息。

 让我们修改一开始的route装饰器,改成:

@app.route("/<str:arg>")

 看到这个<str:arg>了吗,意思是会在斜杠后接受一个参数,声明为arg,

例如127.0.0.1:5000/hello,在函数中,就会声明一个内容为hello、名称为arg的变量,然后就可以直接引用它,现在,把return语句再改成:

returnrender_template("hello.html"string=arg)

现在,打开127.0.0.1:5000/hello,会显示“hello”


/5、高级渲染/

现在,我们已经成功显示了一个变量,可是,如果要显示成千上万个变量呢?一个一个对应写太麻烦了,我们可以把它们放进列表里,可是,要如何显示列表呢?

 除了{{}}直接用变量替换,其实还可以用{% %}把其它代码嵌入HTML。

现在,把hello.html改成:

<ul> {% for item in items %} <li>{{item}}</li> {% endfor %}</ul>


就是一个标准的for循环,遍历items,每一次就把下一项存在item,就可以显示整个列表,例如如果要显示arg用^分割成几项的一个列表,就可以把return改写成:

return render_template("hello.html", items=arg.split("^"))

 现在,打开127.0.0.1:5000/kyv^is^very^handsome,就可以看到这几个单词被分成了几行显示

有时候,我们又要做判断,同样的,把hello.html改成:

{% iflen(item) > 10 %} <p>好长的列表啊!</p>{% else%} <p>不那么长的列表</p>{% endif%}


就是一个标准的if-else,如果用^分割的项数大于10,就会显示“好长的列表啊!”,否则显示“不那么长的列表”


今天你学废了吗

以上是关于Flask系列的主要内容,如果未能解决你的问题,请参考以下文章

Flask系列

Flask 系列之 Pagination

Flask系列 路由系统

Flask 编写http接口api及接口自动化测试

12_关于flask中的宏

Flask系列-程序基本结构