flask学习笔记

Posted 沙发垫的猫先生

tags:

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


,接下来要学习的是具体的使用方法。

模板

Jinjia2模板引擎

变量

flask学习笔记(二)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

from flask import Flask, render_template

from flask import request

app = Flask(__name__)

@app.route('/')

def index():

return render_template('index.html')

@app.route('/user/<name>')

def user(name):

return render_template('user.html', name=name)% user.html中的{{ name }}变量赋值为name值

if __name__ == '__main__':

app.run(debug=True)


另外,Jinjia2还提供了过滤器实现常用的修改。使用方法如下


1

Hello,{{ name|capitalize }}


常见过滤器有以下几种

对于safe处理器。默认情况下,出于安全考虑,Jinja2会转义所有变量。例如,如果一个变量的值为'<h1>Hello</h1>',Jinja2会将其渲染成'&lt;h1&gt;Hello&lt;/h1&gt;',浏览不会对这个变量进行解释。很多情况下需要显示变量中存储的HTML代码,这时就可使用safe过滤器,保证变量中的html代码可以正常的解析出来。

控制结构

条件控制


1

2

3

4

5

{% if user %}

Hello, {{ user }}!

{% else %}

Hello, Stranger!

{% endif %}


for 循环


1

2

3

4

5

<ul>

{% for comment in comments %}

<li>{{ comment }}</li>

{% endfor %}

</ul>


宏(函数)


1

2

3

4

5

6

7

8

9

10

{% macro render_comment(comment) %}

<li>{{ comment }}</li>

{% endmacro %}

//定义了render_comment宏,对comment进行comment处理(这个奇怪的对应关系23333)

<ul>

{% for comment in comments %}

{{ render_comment(comment) }}

{% endfor %}

</ul>


甚至还可以模块化,将宏保存在单独的文件中,使用如下语句:


1

2

3

4

5

6

{% import 'macros.html' as macros %}

<ul>

{% for comment in comments %}

{{ macros.render_comment(comment) }}

{% endfor %}

</ul>


简直和python的模块使用方法一模一样。

需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,避免多次键入。代码如下:


1

{% include 'common.html' %}



或者使用继承的方式,类似于类继承。创建一个base.html为基模板。


1

2

3

4

5

6

7

8

9

10

11

<html>

<head>

{% block head %}

<title>{% block title %}{% endblock %} - My Application</title>

{% endblock %}

</head>

<body>

{% block body %}

{% endblock %}

</body>

</html>


这里面的block定义的标签可以在衍生模板里随意更改。下面是衍生模板举例:


1

2

3

4

5

6

7

8

9

10

{% extends "base.html" %}

{% block title %}Index{% endblock %}

{% block head %}

{{ super() }}

<style>

</style>

{% endblock %}

{% block body %}

<h1>Hello, World!</h1>

{% endblock %}



以上是关于flask学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

flask学习笔记(-Web 表单)

flask学习笔记(-数据库)

flask学习笔记(-数据库)

flask学习笔记(-操作数据库)

Flask 源代码阅读笔记

Python学习笔记_05:使用Flask+MySQL实现用户登陆注册以及增删查改操作