首页 > Python资料 博客日记

基于Python + Flask+ Mysq实现简易留言板

2024-06-22 15:00:05Python资料围观129

这篇文章介绍了基于Python + Flask+ Mysq实现简易留言板,分享给大家做个参考,收藏Python资料网收获更多编程知识

使用Python + Flask+ Mysql实现简易留言板,包括网友编辑留言、修改留言,删除留言、分页显示四大功能。

写出留言板建设过程,包括开发使用工具、留言板模块设计、数据库设计、页面设计、关键技术。

留言板建设过程总结

一.开发使用工具

  1. Python: 作为后端编程语言,负责处理业务逻辑。

  2. Flask: 轻量级的Web框架,用于快速构建Web应用。

  3. MySQL: 关系型数据库管理系统,用于存储留言板的数据。

  4. Navicat: Navicat是一款强大的数据库管理和开发工具,支持多种数据库管理系统。

  5. PyCharm:PyCharm是由JetBrains开发的一款强大的Python集成开发环境(IDE)。它专为提高Python开发效率而设计,提供了一系列专业功能,让编程工作更加高效、舒适。

  6. VS Code:Visual Studio Code(简称VS Code)是微软开发的一款免费、开源的源代码编辑器,它支持几乎所有的主流编程语言,包括但不限于Python、JavaScript、C++、Java等。VS Code以其轻量级、强大、高度可定制的特性,迅速成为了许多开发者首选的开发工具。

二.留言板模块设计

目录设计

d----- 2024/6/7 21:12 templates
-a---- 2024/6/7 21:26 2665 app.py

首页分页显示留言 (@app.route('/'))
  • 获取请求参数中的页码数,默认为1,每页显示的消息数量固定为5。
  • 创建游标cur以执行SQL。
  • 执行SQL查询以获取当前页的留言数据,按创建时间降序排列,并使用LIMIT和OFFSET进行分页。
  • 查询总留言数。
  • 游标关闭,渲染并返回index.html,将留言数据、总留言数、当前页码和每页显示的消息数量传给模板。
添加留言 (@app.route('/add', methods=['POST']))
  • 处理POST请求,从表单中获取留言内容。
  • 使用游标执行SQL语句,将留言内容插入到messages表中。
  • 提交事务以保存更改,关闭游标。
  • 使用flash函数向用户显示操作成功的消息,并重定向回首页。
编辑留言 (@app.route('/edit/<int:message_id>', methods=['GET', 'POST']))
  • 根据URL中的message_id处理GET和POST请求。
    • GET请求:查询指定ID的留言信息,并渲染edit.html模板,将留言信息传入以便用户编辑。
    • POST请求:获取表单中的留言内容,执行SQL更新对应ID的留言内容。
    • 提交事务,显示成功消息,并重定向回首页。
删除留言 (@app.route('/delete/<int:message_id>'))
  • 根据URL中的message_id执行SQL语句,删除对应的留言记录。
  • 提交事务,显示删除成功的消息,然后重定向回首页。
主运行块 (if __name__ == '__main__':)
  • 确保直接运行此脚本时启动Flask应用,而非作为模块导入。
  • 设置debug=True开启调试模式,便于开发过程中查看错误信息和自动重启服务。

这段代码展示了如何在Flask应用中与MySQL数据库交互,实现基本的CRUD(创建(Create)、读取(Retrieve)、更新(Update)、删除(Delete))操作,并利用Flask的模板引擎渲染动态页面。

  1. 首页

    • 显示所有留言,采用分页技术进行展示。
    • 提供留言编辑和提交功能。
  2. 留言编辑页

    • 展示当前用户已发布的留言。
    • 提供修改和删除留言的功能。

三.数据库设计

CREATE DATABASE message_board;
USE message_board;

CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. 留言表 (messages):
  • id: 这是一个整数类型的字段,用于唯一标识每一条留言记录。AUTO_INCREMENT 表示每次插入新记录时,该字段的值会自动增加,而不需要手动指定。PRIMARY KEY 定义该字段为主键,主键在一个表中必须唯一且不能为NULL。

  • content: 这是一个文本类型字段,用于存储留言的具体内容。TEXT 类型适合存储大量的文本数据,远比 VARCHAR 类型能存的字符数量多。NOT NULL 约束意味着这个字段在插入数据时必须有值,不能为空。

  • created_at: 这是一个时间戳类型的字段,用于记录留言创建的时间。TIMESTAMP 类型可以精确到秒,并且 DEFAULT CURRENT_TIMESTAMP 指定了当插入新记录时,如果这个字段没有给定值,就自动采用当前的时间戳作为其值。

配置MySQL数据库连接信息

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'your_password'
app.config['MYSQL_DB'] = 'message_board'
app.config['MYSQL_PORT'] = 3308 # 设置端口号
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql = MySQL(app)
  • app.config['MYSQL_HOST'] = 'localhost': 指定MySQL服务器的地址,这里设置为本地主机(即在同一台机器上运行的MySQL服务)。如果是远程服务器,则需要替换为相应的IP地址或域名。

  • app.config['MYSQL_USER'] = 'root': 设置访问MySQL数据库的用户名为root。root用户通常是MySQL的默认管理员账户,拥有所有权限。在生产环境中,出于安全考虑,应避免使用root账户,而是创建具有有限权限的专用账户。

  • app.config['MYSQL_PASSWORD'] = 'your_password': 设置访问数据库所需的密码。your_password应该替换为实际的MySQL root用户的密码。注意:在实际应用中,直接硬编码密码是不安全的做法,尤其是当代码可能被他人查看时。考虑使用环境变量或其他安全方式来管理敏感信息。

  • app.config['MYSQL_DB'] = 'message_board': 指定要连接的数据库名称为message_board。在使用前,确保该数据库已在MySQL服务器上创建。

  • app.config['MYSQL_CURSORCLASS'] = 'DictCursor': 设置MySQL游标的类为DictCursor。这意味着从查询结果中获取的数据将以字典形式呈现,其中列名作为键,列值作为值。这使得在Python代码中通过列名访问数据变得非常直观和方便。

  • mysql = MySQL(app): 初始化MySQL对象,并将其与Flask应用实例关联。这里MySQL应该是之前通过from flask_mysqldb import MySQL导入的。这个步骤实际上建立了Flask应用和MySQL数据库之间的连接桥梁,使得之后可以通过mysql.connection等方式执行SQL操作。

四.页面设计

五.关键技术

  1. 路由定义: 使用Flask的@app.route()装饰器定义URL路由,处理GET和POST请求。
  2. 模板渲染: 利用Jinja2模板引擎动态生成HTML页面,传递变量和执行逻辑控制。
  3. 数据库操作: 通过SQLAlchemy ORM进行数据库的增删改查操作,包括模型定义、会话管理和事务处理。
  4. 表单处理: Flask-WTF用于创建表单类,定义字段、验证规则,以及处理用户提交的数据。
  5. 分页功能: 实现分页查询,通常结合SQLAlchemy的Limit和Offset方法,以及前端的分页导航UI。
  6. 安全措施: 对用户输入进行校验和清理,防止SQL注入和XSS攻击;使用WTForms进行表单验证,确保数据的有效性。
  7. 错误处理: 实现基本的错误处理机制,比如404页面未找到、500服务器内部错误的定制化返回。

版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐