引言
Flask 是一个轻量级的 Web 框架,它简单易用,非常适合初学者入门。在这个教程中,我们将一步步教你如何使用 Flask 创建一个简易的登录系统。通过学习这个案例,你将了解到 Flask 的基本用法,以及如何处理用户认证和会话管理。
环境准备
在开始之前,请确保你已经安装了 Python 和 Flask。你可以使用以下命令安装 Flask:
pip install Flask
创建项目结构
首先,我们需要创建一个项目目录,并在其中创建一个名为 app.py 的 Python 文件。以下是项目的基本结构:
my_flask_login/
│
├── app.py
├── templates/
│ ├── base.html
│ └── login.html
└── static/
└── css/
编写 Flask 应用
在 app.py 文件中,我们将创建一个 Flask 应用,并定义两个路由:/login 用于显示登录表单,/login_check 用于处理登录请求。
from flask import Flask, render_template, request, redirect, url_for, session
app = Flask(__name__)
app.secret_key = 'your_secret_key'
@app.route('/')
def index():
return render_template('base.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 在这里,我们假设有一个用户名为 'admin',密码为 'password' 的用户
if username == 'admin' and password == 'password':
session['username'] = username
return redirect(url_for('index'))
else:
return '登录失败,用户名或密码错误'
return render_template('login.html')
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
创建模板
接下来,我们需要创建两个 HTML 模板文件:base.html 和 login.html。
templates/base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask 登录系统</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<div class="container">
{% block content %}
{% endblock %}
</div>
</body>
</html>
templates/login.html:
{% extends "base.html" %}
{% block content %}
<h2>登录</h2>
<form method="post">
<div>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<button type="submit">登录</button>
</div>
</form>
{% endblock %}
部署应用
现在,你可以启动 Flask 应用,并访问 http://127.0.0.1:5000/login 来测试登录功能。当你输入正确的用户名和密码时,你应该会被重定向到首页。
总结
通过本教程,你学会了如何使用 Flask 创建一个简易的登录系统。这个案例只是一个起点,你可以根据需要添加更多功能,例如密码加密、用户注册、角色管理等。祝你学习愉快!
