创建简单的flask程序

本文介绍了如何创建一个简单的Flask程序,包括初始化程序实例、定义路由、编写视图函数以及启动内置服务器。同时,深入讲解了如何使用模板进行页面渲染,如在模板中使用条件控制语句和for循环,以及实现模板继承的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化

所有 Flask 程序都必须创建一个程序实例。程序实例是 Flask 类的对象,经常使用下述代码创建:

from flask import Flask
app = Flask(__name__)

客户端(例如 Web 浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到Python 函数的映射关系。

路由

处理 URL 和函数之间关系的程序称为路由
app.route 修饰器把修饰的函数注册为路由。

@app.route('/')
def index():
 return '<h1>Hello World!</h1>'

把 index() 函数注册为程序根地址的处理程序。
如果部署程序的服务器域名为 www.example.com,在浏览器中访问 http://www.example.com 后,会触发服务器执行 index() 函
数。这个函数的返回值称为响应,是客户端接收到的内容。如果客户端是 Web 浏览器,响应就是显示给用户查看的文档。

视图函数

像 index() 这样的函数称为视图函数(view function)。视图函数返回的响应可以是包含HTML 的简单字符串,也可以是复杂的表单。

#<name>为动态内容,<int:id>只会匹配动态片段 id 为整数的 URL。
@app.route('/user/<name>')  
def user(name):
 return '<h1>Hello, %s!</h1>' % name
 #调用视图函数时,Flask 会将动态部分作为参数传入函数。
 #在这个视图函数中,参数用于生成针对个人的欢迎消息。

启动服务器

程序实例用 run 方法启动 Flask 集成的开发 Web 服务器:

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

hello.py:一个完整的 Flask 程序

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
 return '<h1>Hello World!</h1>'
if __name__ == '__main__':
 app.run(debug=True)

hello.py:渲染模板
from flask import Flask, render_template

模板

hello.py:渲染模板


from flask import Flask, render_template@app.route('/')
def index():
 return render_template('index.html')
@app.route('/user/<name>')
def user(name):
 return render_template('user.html', name=name)

Flask 提供的 render_template 函数把 Jinja2 模板引擎集成到了程序中。render_template 函数的第一个参数是模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。

在模板中使用条件控制语句:

{% if user %}
 Hello, {{ user }}!
{% else %}
 Hello, Stranger!
{% endif %}

使用 for 循环

<ul>
 {% for comment in comments %}
 <li>{{ comment }}</li>
 {% endfor %}
</ul>

模板继承

它类似于 Python 代码中的类继承。
首先,创建一个名为 base.html 的基模板:

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

block 标签定义的元素可在衍生模板中修改。在本例中,我们定义了名为 head、title 和body 的块。注意,title 包含在 head 中。
下面这个示例是基模板的衍生模板

{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
 {{ super() }}
 <style>
 </style>
{% endblock %}
{% block body %}
<h1>Hello, World!</h1>
{% endblock %}
extends 

指令声明这个模板衍生自 base.html。在 extends 指令之后,基模板中的 3 个块被
重新定义,模板引擎会将其插入适当的位置。注意新定义的 head 块,在基模板中其内容不是空的,所以使用 super() 获取原来的内容。

初始化 Flask-Bootstrap

from flask.ext.bootstrap import Bootstrap 
# ...
bootstrap = Bootstrap(app)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值