馒头框架(Flask-MongoEngine)是一个结合了Flask和MongoEngine的Python Web框架。它基于MongoDB进行数据存储,非常适合构建快速原型和复杂应用。本文将带你通过一个简单的登录示例程序,轻松上手馒头框架的用户认证技巧。
1. 环境搭建
首先,确保你的计算机上已安装Python和MongoDB。接下来,通过以下命令安装馒头框架及其依赖项:
pip install flask flask-mongoengine
2. 创建项目结构
创建一个名为login_example的文件夹,并在其中创建以下文件:
app.py: 主应用文件。models.py: 数据模型定义文件。forms.py: 表单类定义文件。templates/: 模板文件夹,存放HTML文件。static/: 静态文件夹,存放CSS、JavaScript等文件。
3. 定义数据模型
在models.py文件中定义用户数据模型:
from flask_mongoengine import MongoEngine
from werkzeug.security import generate_password_hash, check_password_hash
db = MongoEngine()
class User(db.Document):
username = db.StringField(required=True, unique=True)
password = db.StringField(required=True)
email = db.StringField()
def set_password(self, password):
self.password = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password, password)
4. 创建表单类
在forms.py文件中定义登录表单类:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, EqualTo
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
5. 配置应用
在app.py文件中配置馒头框架:
from flask import Flask, render_template, redirect, url_for, flash
from flask_mongoengine import MongoEngine
from forms import LoginForm
from models import User
app = Flask(__name__)
app.config['MONGODB_SETTINGS'] = {
'db': 'login_example',
'host': 'localhost',
'port': 27017
}
db = MongoEngine(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.objects(username=form.username.data).first()
if user and user.check_password(form.password.data):
flash('Login successful!')
return redirect(url_for('index'))
else:
flash('Invalid username or password.')
return render_template('login.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
6. 创建模板
在templates/文件夹中创建以下HTML文件:
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login Example</title>
</head>
<body>
<h1>Welcome to the Login Example</h1>
<a href="{{ url_for('login') }}">Login</a>
</body>
</html>
login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="post">
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}<br>
{{ form.username(size=32) }}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=32) }}
</p>
<p>{{ form.submit() }}</p>
</form>
</body>
</html>
7. 运行应用
在终端中运行以下命令启动应用:
python app.py
现在,打开浏览器并访问http://127.0.0.1:5000/,你将看到登录界面。输入用户名和密码,点击“Login”按钮,即可体验馒头框架的用户认证功能。
通过本文的示例,相信你已经掌握了馒头框架的基本用户认证技巧。接下来,你可以在此基础上进行更多功能拓展,如注册、密码找回等。祝你学习愉快!
