Skip to content

flask基础教程

Alt text

目录

安装

为什么要创建虚拟环境呢? 因为Python的包管理工具pip默认安装在系统目录下,如果系统目录下有其他版本的包,可能会导致冲突。 创建虚拟环境后,就可以在虚拟环境中安装各种包,不会影响到系统目录下的包。

创建虚拟环境

bash
python3 -m venv venv

激活虚拟环境

bash
source venv/bin/activate

安装Flask

bash
pip install flask

创建一个app.py文件,并写入以下代码:

python
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

运行app.py文件,访问localhost:5000,即可看到“Hello, World!”

模板

Flask支持Jinja2模板引擎,Jinja2是Python写的模板引擎,它可以用来生成HTML、XML、CSV、JavaScript、CSS、等等各种格式的文本文件。

基本使用

在app.py文件中,导入render_template函数,并在hello_world函数中使用它。

python
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

在templates目录下创建一个index.html文件,并写入以下代码:

html
<!DOCTYPE html>
<html>
<head>
    <title>Hello, World!</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

变量传递

在index.html文件中,我们可以使用变量来传递数据。

html
<!DOCTYPE html>
<html>
<head>
    <title>Hello, {{ name }}!</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

在app.py文件中,使用变量传递数据。

python
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html', name='World')

if __name__ == '__main__':
    app.run()

条件语句

在index.html文件中,我们可以使用条件语句来判断是否显示“Hello, World!”。

html
<!DOCTYPE html>
<html>
<head>
    <title>Hello, {{ name }}!</title>
</head>
<body>
    {% if name == 'World' %}
        <h1>Hello, World!</h1>
        {% else %}
        <h1>Hello, {{ name }}!</h1>
    {% endif %}
</body>
</html>

在app.py文件中,使用条件语句来判断是否显示“Hello, World!”。

python
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html', name='World')
    
if __name__ == '__main__':
    app.run()

在index.html文件中,我们可以使用循环语句来显示多个“Hello, World!”。

html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Hello, World!</title>
    </head>
    <body>
        <h1>Hello, {{ name }}!</h1>
        <ul>
            {% for i in range(10) %}
                <li>Hello, World!</li>
                <li>Hello, World!</li>
                <li>Hello, World!</li>
            {% endfor %}
        </ul>
    </body>
    </html>

静态文件的使用

  1. 静态文件一般存放在项目的static文件夹中,可以通过url_for()函数来访问静态文件。
html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <img src="{{ url_for('static', filename='img/flask.png') }}">
    <img src="{{ url_for('static', filename='img/flask.png') }}">
</body>
</html>