dede企业网站模板/如何建立自己的网站

dede企业网站模板,如何建立自己的网站,招工平台网,第三方b2c平台有哪些学习目标:使用SQLAlchemy操作数据库 from flask_sqlalchemy import SQLAlchemyapp.config[SQLALCHEMY_DATABASE_URI] sqlite:///site.db db SQLAlchemy(app)class User(db.Model):id db.Column(db.Integer, primary_keyTrue)username db.Column(db.String(20),…

学习目标:使用SQLAlchemy操作数据库

from flask_sqlalchemy import SQLAlchemyapp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(20), unique=True)posts = db.relationship('Post', backref='author')class Post(db.Model):id = db.Column(db.Integer, primary_key=True)title = db.Column(db.String(100))user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

✅ 实践任务

  1. 初始化数据库:flask shell中执行db.create_all()

  2. 实现用户注册功能(数据库存储)

  3. 创建一对多关系(用户-文章)

  4. 使用Flask-Migrate管理数据库迁移

要在 Flask 应用中初始化数据库并使用 flask shell 执行 db.create_all(),你可以按照以下步骤进行:

1. 安装 Flask-SQLAlchemy

如果你还没有安装 Flask-SQLAlchemy,可以使用以下命令进行安装:

pip install Flask-SQLAlchemy

2. 更新 app.py 文件

接下来,更新 app.py 文件以配置数据库并定义模型。

# app.py
from flask import Flask, jsonify, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 配置数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)# 定义用户模型
class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)password = db.Column(db.String(120), nullable=False)@app.route('/')
def home():users = User.query.all()  # 从数据库中获取所有用户return render_template('home.html', users=users)@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form['username']password = request.form['password']new_user = User(username=username, password=password)db.session.add(new_user)  # 添加新用户到数据库db.session.commit()  # 提交更改return redirect(url_for('home'))return render_template('register.html')@app.route('/profile')
def profile():return render_template('profile.html')@app.route('/api')
def api():return jsonify({"message": "这是API端点。"})if __name__ == '__main__':app.run(debug=True)

说明:

  • 在 app.py 中,配置了 SQLite 数据库,并定义了一个 User 模型,包含 id、username 和 password 字段。
  • 在 register 路由中,添加了新用户到数据库的逻辑。

3. 初始化数据库

现在,你可以使用 flask shell 来初始化数据库。

  • 在终端中,导航到你的项目目录。
  • 启动 Flask shell:
flask shell
  • 在 Flask shell 中,执行以下命令以创建数据库和表:
from app import db
db.create_all()

4. 退出 Flask shell

完成后,你可以使用 exit() 命令退出 Flask shell。

运行应用:

确保你的项目结构正确,然后在终端中运行 python app.py。访问注册页面并注册用户,用户信息将被存储在 SQLite 数据库中。

要实现用户注册功能并将用户信息存储到数据库中,你可以按照以下步骤进行:

1. 更新 register 路由

在 app.py 中,确保 register 路由能够处理用户注册并将用户信息存储到数据库中。我们已经在之前的代码中添加了这个功能,但这里我们将确保它完整且安全。

2. 完整的 app.py 文件

以下是更新后的 app.py 文件,确保用户注册功能正常工作:

# app.py
from flask import Flask, jsonify, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 配置数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)# 定义用户模型
class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)password = db.Column(db.String(120), nullable=False)@app.route('/')
def home():users = User.query.all()  # 从数据库中获取所有用户return render_template('home.html', users=users)@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form['username']password = request.form['password']# 检查用户名是否已存在existing_user = User.query.filter_by(username=username).first()if existing_user:return "用户名已存在,请选择其他用户名。", 400new_user = User(username=username, password=password)db.session.add(new_user)  # 添加新用户到数据库db.session.commit()  # 提交更改return redirect(url_for('home'))  # 注册成功后重定向到首页return render_template('register.html')@app.route('/profile')
def profile():return render_template('profile.html')@app.route('/api')
def api():return jsonify({"message": "这是API端点。"})if __name__ == '__main__':app.run(debug=True)

说明:

  • 在 register 路由中,首先检查用户名是否已存在。如果存在,返回一个错误消息。
  • 如果用户名可用,则创建一个新的 User 实例,并将其添加到数据库中。
  • 使用 db.session.commit() 提交更改,将用户信息存储到数据库中。
  • 注册成功后,重定向到首页。

3. 运行应用

确保你的项目结构正确,然后在终端中运行 python app.py。访问注册页面,填写用户名和密码进行注册。注册成功后,用户信息将被存储在 SQLite 数据库中。

4. 验证用户注册

你可以在 flask shell 中验证用户是否成功注册:

  • 启动 Flask shell:
flask shell

查询用户:

from app import db, User
users = User.query.all()
for user in users:print(user.username)

这将打印出所有注册用户的用户名,确保用户注册功能正常工作。

要在 Flask 应用中创建一对多关系(例如,用户与文章之间的关系),你可以按照以下步骤进行:

1. 更新数据库模型

首先,我们需要在 app.py 中定义一个新的模型 Post,并在 User 模型中添加与 Post 的关系。

2. 更新 app.py 文件

以下是更新后的 app.py 文件,包含用户与文章之间的一对多关系:

# app.py
from flask import Flask, jsonify, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 配置数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)# 定义用户模型
class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)password = db.Column(db.String(120), nullable=False)posts = db.relationship('Post', backref='author', lazy=True)  # 一对多关系# 定义文章模型
class Post(db.Model):id = db.Column(db.Integer, primary_key=True)title = db.Column(db.String(120), nullable=False)content = db.Column(db.Text, nullable=False)user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)  # 外键@app.route('/')
def home():users = User.query.all()  # 从数据库中获取所有用户return render_template('home.html', users=users)@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form['username']password = request.form['password']# 检查用户名是否已存在existing_user = User.query.filter_by(username=username).first()if existing_user:return "用户名已存在,请选择其他用户名。", 400new_user = User(username=username, password=password)db.session.add(new_user)  # 添加新用户到数据库db.session.commit()  # 提交更改return redirect(url_for('home'))  # 注册成功后重定向到首页return render_template('register.html')@app.route('/profile')
def profile():return render_template('profile.html')@app.route('/api')
def api():return jsonify({"message": "这是API端点。"})if __name__ == '__main__':app.run(debug=True)

说明:

  • 在 User 模型中,使用 db.relationship 定义与 Post 模型的一对多关系。backref='author' 允许我们通过 post.author 访问文章的作者。
  • 在 Post 模型中,定义了 title、content 和 user_id 字段,其中 user_id 是外键,指向 User 模型的 id 字段。

3. 初始化数据库

在进行模型更改后,你需要重新初始化数据库。使用 flask shell 执行以下命令:

flask shell

然后执行:

from app import db
db.create_all()

4. 创建文章的路由

接下来,我们可以添加一个路由来创建文章。以下是如何实现的:

@app.route('/post', methods=['GET', 'POST'])
def create_post():if request.method == 'POST':title = request.form['title']content = request.form['content']user_id = request.form['user_id']  # 假设你从表单中获取用户IDnew_post = Post(title=title, content=content, user_id=user_id)db.session.add(new_post)db.session.commit()return redirect(url_for('home'))users = User.query.all()  # 获取所有用户以供选择return render_template('create_post.html', users=users)

5. 创建文章表单模板

在 templates 目录中创建一个新的 HTML 文件 create_post.html:

6. 运行应用

确保你的项目结构正确,然后在终端中运行 python app.py。访问 /post 路由以创建新文章,选择作者并填写文章标题和内容。文章将被存储在数据库中,并与相应的用户关联。

使用 Flask-Migrate 管理数据库迁移是一个很好的选择,它可以帮助你轻松地处理数据库模式的更改。以下是如何在你的 Flask 应用中设置和使用 Flask-Migrate 的步骤:

. 安装 Flask-Migrate

首先,确保你已经安装了 Flask-Migrate。你可以使用以下命令安装:

pip install Flask-Migrate

2. 更新 app.py 文件

接下来,更新 app.py 文件以集成 Flask-Migrate。以下是更新后的代码:

# app.py
from flask import Flask, jsonify, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrateapp = Flask(__name__)# 配置数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
migrate = Migrate(app, db)  # 初始化 Flask-Migrate# 定义用户模型
class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)password = db.Column(db.String(120), nullable=False)posts = db.relationship('Post', backref='author', lazy=True)  # 一对多关系# 定义文章模型
class Post(db.Model):id = db.Column(db.Integer, primary_key=True)title = db.Column(db.String(120), nullable=False)content = db.Column(db.Text, nullable=False)user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)  # 外键@app.route('/')
def home():users = User.query.all()  # 从数据库中获取所有用户return render_template('home.html', users=users)@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form['username']password = request.form['password']# 检查用户名是否已存在existing_user = User.query.filter_by(username=username).first()if existing_user:return "用户名已存在,请选择其他用户名。", 400new_user = User(username=username, password=password)db.session.add(new_user)  # 添加新用户到数据库db.session.commit()  # 提交更改return redirect(url_for('home'))  # 注册成功后重定向到首页return render_template('register.html')@app.route('/post', methods=['GET', 'POST'])
def create_post():if request.method == 'POST':title = request.form['title']content = request.form['content']user_id = request.form['user_id']  # 假设你从表单中获取用户IDnew_post = Post(title=title, content=content, user_id=user_id)db.session.add(new_post)db.session.commit()return redirect(url_for('home'))users = User.query.all()  # 获取所有用户以供选择return render_template('create_post.html', users=users)@app.route('/profile')
def profile():return render_template('profile.html')@app.route('/api')
def api():return jsonify({"message": "这是API端点。"})if __name__ == '__main__':app.run(debug=True)

3. 初始化 Flask-Migrate

在项目目录中,使用以下命令初始化 Flask-Migrate:

flask db init

这将创建一个 migrations 目录,用于存储迁移脚本。

4. 创建迁移脚本

当你对模型进行更改时,可以使用以下命令创建迁移脚本:

flask db migrate -m "描述你的更改"

例如,如果你添加了一个新的字段到 Post 模型,你可以这样做:

flask db migrate -m "添加了新的字段到 Post 模型"

5. 应用迁移

要将迁移应用到数据库中,使用以下命令:

flask db upgrade

这将更新数据库以匹配当前的模型定义。

6. 查看迁移历史

你可以使用以下命令查看迁移历史:

flask db history

7. 回滚迁移

如果需要回滚到上一个迁移,可以使用以下命令:

flask db downgrade

8. 运行应用

确保你的项目结构正确,然后在终端中运行 python app.py。你现在可以使用 Flask-Migrate 来管理数据库迁移了。

总结

通过以上步骤,你已经成功集成了 Flask-Migrate,并可以轻松管理数据库的迁移。每当你对模型进行更改时,只需创建新的迁移脚本并应用它们即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可以免费无限次下载PPT的网站

前言 最近发现了一个超实用的网站,想分享给大家。 在学习和工作的过程中,想必做PPT是一件让大家都很头疼的一件事。 想下载一些PPT模板减少做PPT的工作量,但网上大多精美的PPT都是需要付费才能下载使用。 即使免费也有次数限制&#xff0…

Android OpenGLES2.0开发(十一):渲染YUV

人生如逆旅,我亦是行人 Android OpenGLES开发:EGL环境搭建Android OpenGLES2.0开发(一):艰难的开始Android OpenGLES2.0开发(二):环境搭建Android OpenGLES2.0开发(三&am…

日语Learn、英语的再认识

背单词这件事感觉到了某个瓶颈了,没有什么新的区域可以发现,变成了一种类似纯粹的机械记忆,感觉英语的规范程度很低,很多词明明可以通过相近的形式变换,达到更好的学习效果,但却做的很麻烦,同一…

文心一言AI创意画

介绍 文心一言是百度推出的新一代知识增强大语言模型,属于文心大模型家族的新成员。‌它能够与人对话互动、回答问题、协助创作,高效便捷地帮助人们获取信息、知识和灵感。‌ 特点 文心一言基于数万亿数据和数千亿知识进行融合学习,采用预训…

洛谷 P8705:[蓝桥杯 2020 省 B1] 填空题之“试题 E :矩阵” ← 卡特兰数

【题目来源】 https://www.luogu.com.cn/problem/P8705 【题目描述】 把 1∼2020 放在 21010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案? 答案很大,你只需要给出方案数除以 2020 的余数即可。 【答案提交】 …

我是如何从 0 到 1 找到 Web3 工作的?

作者:Lotus的人生实验 关于我花了一个月的时间,从 0 到 1 学习 Web3 相关的知识和编程知识。然后找到了一个 Web3 创业公司实习的远程工作。 👇👇👇 我的背景: 计算机科班,学历还可以(大厂门槛水平) 毕业工…

2025最新智能优化算法:人工旅鼠算法(Artificial Lemming Algorithm, ALA)求解23个经典函数测试集,MATLAB

一、人工旅鼠优化算法 人工旅鼠算法(Artificial Lemming Algorithm, ALA)是2025年提出的一种新型生物启发式优化算法,受旅鼠的四种典型行为启发:长距离迁徙、挖洞、觅食和躲避捕食者。该算法通过模拟这些行为来解决复杂的优化问题…

Python游戏编程之赛车游戏6-2

3.2 move()方法的定义 Player类的move()方法用于玩家控制汽车左右移动,当玩家点击键盘上的左右按键时,汽车会相应地进行左右移动。 move()方法的代码如图7所示。 图7 move()方法的代码 其中,第20行代码通过pygame.key.get_pressed()函数获…

华为hcia——Datacom实验指南——二层交换原理

实验配置 eNSP 什么是二层交换 二层交换是指在同一个ip网段内,数据通过二层交换机进行转发。 什么是mac地址 mac地址也叫做硬件地址,是以太网协议的链路层地址。简单的来说,mac地址就是我们硬件的身份证,独一无二。它是由48个bi…

Android之图片保存相册及分享图片

文章目录 前言一、效果图二、实现步骤1.引入依赖库2.二维码生成3.布局转图片保存或者分享 总结 前言 其实现在很多分享都是我们自定义的,更多的是在界面加了很多东西,然后把整个界面转成图片保存相册和分享,而且现在分享都不需要第三方&…

故障诊断 | Matlab实现基于DBO-BP-Bagging多特征分类预测/故障诊断

故障诊断 | Matlab实现基于DBO-BP-Bagging多特征分类预测/故障诊断 目录 故障诊断 | Matlab实现基于DBO-BP-Bagging多特征分类预测/故障诊断分类效果基本介绍模型描述DBO-BP-Bagging蜣螂算法优化多特征分类预测一、引言1.1、研究背景和意义1.2、研究现状1.3、研究目的与方法 二…

docker部署go简单web项目(无mysql等附加功能)

首先准备好go语言代码 代码表示当访问主机上8080端口下的/hello路径时,会返回hello,world。 package mainimport ("fmt""github.com/gin-gonic/gin" )type hh struct {S string }func main() {router : gin.Default()router.GET(&…

OceanBase数据库实战:Windows Docker部署与DBeaver无缝对接

一、前言 OceanBase 是一款高性能、高可扩展的分布式数据库,适用于大规模数据处理和企业级应用。 随着大数据和云计算的普及,OceanBase 在企业数字化转型中扮演着重要角色。学习 OceanBase 可以帮助开发者掌握先进的分布式数据库技术,提升数…

在 HuggingFace 中使用 SSH 进行下载数据集和模型

SSH 是一种 安全通讯的协议,我们通过配置 SSH 的密钥 来在 Git 上实现 Huggingface 模型的命令行下载。 参考网址:https://huggingface.co/docs/hub/security-git-ssh 点击自己的头像,点击 Add SSH key 在 Windows 上,我们实现已…

Linux-----进程间通信

一、按通信范围分类 同一主机进程通信 传统IPC方式: 管道(无名管道、有名管道)信号(Signal) System V IPC: 共享内存(效率最高)消息队列信号量 POSIX IPC(较新标准&#…

考研/保研复试英语问答题库(华工建院)

华南理工大学建筑学院保研/考研 英语复试题库,由华工保研er和学硕笔试第一同学一起整理,覆盖面广,助力考研/保研上岸!需要👇载可到文章末尾见小🍠。 以下是主要内容: Part0 复试英语的方法论 Pa…

岳阳市美术馆预约平台(小程序论文源码调试讲解)

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…

Python游戏编程之赛车游戏6-3

1 “敌人”汽车类的创建 在创建玩家汽车类之后,接下来创建“敌人”汽车类。“敌人”汽车类与玩家类一样,也是包含两个方法,一个是__init__(),另一个是move()。 1.1 __init__()方法 “敌人”汽车类的__init__()方法代码如图1所示…

TCP/UDP调试工具推荐:Socket通信图解教程

TCP/UDP调试工具推荐:Socket通信图解教程 一、引言二、串口调试流程三、下载链接 SocketTool 调试助手是一款旨在协助程序员和网络管理员进行TCP和UDP协议调试的网络通信工具。TCP作为一种面向连接、可靠的协议,具有诸如连接管理、数据分片与重组、流量和…

神经网络 - 神经元

人工神经元(Artificial Neuron),简称神经元(Neuron),是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接收一组输入信号并产生输出。 生物学家在 20 世纪初就发现了生物神经元的结构。一个生物神经元通常具有多个树…