Flask 是一个轻量级的 Python Web 开发框架,它易于上手,适宜构建小型到中型的 Web 利用。在这一章节中,咱们将具体介绍 Flask 的基本概念、组件和用法。为了便于了解,咱们将应用实例来展现如何应用 Flask 构建一个简略的 Web 利用。
9.2.1 装置和创立 Flask 利用
首先,应用 pip 装置 Flask:
pip install flask
接下来,创立一个名为 app.py
的文件,输出以下代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
这个简略的程序创立了一个 Flask 利用,并定义了一个根路由(/
),该路由将返回 “Hello, World!”。运行 app.py
:
python app.py
关上浏览器,拜访 http://127.0.0.1:5000/
,你将看到 “Hello, World!”。
9.2.2 路由和视图函数
在 Flask 中,路由是 URL 到 Python 函数的映射。视图函数是解决特定路由的申请的函数。以下是一个带有两个路由的示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'This is the index page.'
@app.route('/hello')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
这个例子中,咱们定义了两个路由:/
和 /hello
。拜访对应的 URL 时,将显示相应的视图函数返回的内容。
路由变量
你能够在路由中应用 <variable>
的模式定义变量,这样能够将 URL 的一部分作为参数传递给视图函数。例如:
@app.route('/user/<username>')
def show_user_profile(username):
return f'User: {username}'
在这个例子中,拜访 /user/<username>
(如 /user/john
)将显示 “User: john”。
9.2.3 申请和响应
Flask 提供了 request
对象,用于拜访申请数据,如表单、查问参数、文件等。以下是一个解决表单提交的示例:
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return f'Welcome, {request.form["username"]}'
else:
return '''<form method="post">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="password"></p>
<p><input type="submit" value="Login"></p>
</form>
'''if __name__ =='__main__':
app.run()
在这个例子中,咱们定义了一个 /login
路由,该路由承受 GET 和 POST 申请。当用户拜访 /login
时,将显示一个登录表单。填写表单并提交后,将显示”Welcome, username“。
9.2.4 模板
Flask 应用 Jinja2 模板引擎来生成动静 HTML。首先,创立一个名为 templates
的文件夹,而后在其中创立一个名为 login.html
的文件,内容如下:
<form method="post">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="password"></p>
<p><input type="submit" value="Login"></p>
</form>
批改 app.py
,应用 render_template
函数渲染模板:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return f'Welcome, {request.form["username"]}'
else:
return render_template('login.html')
if __name__ == '__main__':
app.run()
当初,当用户拜访 /login
时,将应用 login.html
模板渲染页面。
9.2.5 动态文件
通常,Web 利用须要提供一些动态文件,如 CSS、JavaScript 和图像文件。在 Flask 中,将这些文件放在名为 static
的文件夹中。例如,创立一个名为 main.css
的 CSS 文件,将其放在 static/css
文件夹中。
在模板中,应用 url_for
函数生成动态文件的 URL。批改 login.html
,增加一个链接到 main.css
的样式表:
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<link rel="stylesheet" href="{{url_for('static', filename='css/main.css') }}">
</head>
<body>
<form method="post">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="password"></p>
<p><input type="submit" value="Login"></p>
</form>
</body>
</html>
9.2.6 错误处理
Flask 容许你为特定的 HTTP 错误代码定义自定义谬误处理程序。这对于显示敌对的谬误页面十分有用。例如,上面是一个解决 404(未找到)谬误的示例:
from flask import Flask, render_template
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404
if __name__ == '__main__':
app.run()
在这个例子中,咱们定义了一个名为 page_not_found
的谬误处理程序,用于解决 404 谬误。当用户拜访不存在的页面时,将显示一个自定义的 404 页面。
小结
这一章节介绍了 Flask 的基本概念和用法,包含路由、申请、响应、模板和动态文件。通过这些概念,你能够应用 Flask 构建一个根本的 Web 利用。当然,Flask 还有许多其余性能,如蓝图(用于组织大型利用)、扩大(用于增加额定性能)以及对数据库的反对等。这里只是为你提供了一个入门,要深刻理解 Flask,倡议浏览官网文档和其余教程。
祝你学习欢快!
举荐浏览:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g