实战篇:用户管理模块开发

2024-06-14 21:44

本文主要是介绍实战篇:用户管理模块开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实战篇:用户管理模块开发

用户管理模块简介

用户管理模块是大多数Web应用的核心组件之一,它负责处理用户的注册、登录、信息展示、编辑和删除等操作。

项目结构

假设你已经根据之前讨论的结构组织了你的Flask项目。

第1步:定义用户模型

app/models/models.py中定义用户模型。

from app import db
from werkzeug.security import generate_password_hash, check_password_hashclass User(db.Model):__tablename__ = 'users'id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(64), unique=True, nullable=False)email = db.Column(db.String(120), unique=True, nullable=False)password_hash = db.Column(db.String(128))def set_password(self, password):self.password_hash = generate_password_hash(password)def check_password(self, password):return check_password_hash(self.password_hash, password)def __repr__(self):return '<User %r>' % self.username
第2步:创建数据库迁移

使用Flask-Migrate来创建新的数据库迁移。

flask db init  # 初始化迁移目录
flask db migrate -m "Add user table"
flask db upgrade  # 应用迁移
第3步:注册和登录路由

app/routes/routes.py中创建注册和登录的路由。

from flask import render_template, request, redirect, url_for, flash
from werkzeug.security import generate_password_hash
from app.models.models import User
from app import db@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form['username']email = request.form['email']password = request.form['password']hashed_password = generate_password_hash(password, method='sha256')new_user = User(username=username, email=email)new_user.set_password(hashed_password)db.session.add(new_user)db.session.commit()flash('Your account has been created! You are now able to log in', 'success')return redirect(url_for('login'))return render_template('register.html')@app.route('/login', methods=['GET', 'POST'])
def login():# 登录逻辑pass@app.route('/logout')
def logout():# 登出逻辑pass
第4步:用户认证

使用Flask-Login来处理用户认证。

from flask_login import LoginManager, login_user, logout_user, login_requiredlogin_manager = LoginManager()
login_manager.init_app(app)@login_manager.user_loader
def load_user(user_id):return User.query.get(int(user_id))
第5步:用户资料页面

创建一个路由来展示用户的资料。

@app.route('/profile')
@login_required
def profile():user = current_user# 展示用户资料逻辑pass
第6步:用户编辑页面

允许用户编辑他们的个人信息。

@app.route('/edit-profile', methods=['GET', 'POST'])
@login_required
def edit_profile():user = current_userif request.method == 'POST':# 更新用户信息逻辑passreturn render_template('edit_profile.html', user=user)
第7步:测试用户管理模块

tests/test_models.pytests/test_routes.py中编写测试用例。

# 测试用户模型
def test_user_creation(app):user = User(username='testuser', email='test@example.com')db.session.add(user)db.session.commit()assert User.query.first() is not None# 测试注册路由
def test_register_route(client):response = client.post('/register', data={'username': 'testuser', 'email': 'test@example.com', 'password': 'testpassword'})assert response.status_code == 302  # or the appropriate status code
结语

在本实战篇中,我们开发了一个基本的用户管理模块,包括注册、登录、登出、用户资料展示和编辑功能。每个功能都有对应的路由和模板。


记得在开发过程中编写测试用例,并确保它们通过。这将帮助你确保代码的质量,并在将来重构或添加新功能时提供安全网。此外,考虑使用Flask-Security或Flask-User等扩展来简化用户认证和管理工作。

这篇关于实战篇:用户管理模块开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061591

相关文章

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基