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

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

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户