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系列的主要内容,如果未能解决你的问题,请参考以下文章