Python Flask 框架开发

1. Python 代码示例(使用 Flask 框架)

1.1 安装依赖库

pip install flask flask_sqlalchemy flask_login flask_wtf

1.2 主应用文件 app.py
from flask import Flask, request, jsonify, redirect, url_for, render_template, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, ValidationError, SelectField
from wtforms.validators import DataRequired, Length, EqualTo
import osapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SECRET_KEY'] = os.urandom(24)
db = SQLAlchemy(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'class User(db.Model, UserMixin):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(20), unique=True, nullable=False)password = db.Column(db.String(60), nullable=False)role = db.Column(db.String(20), nullable=False, default='user')  # 'user' or 'admin'class Order(db.Model):id = db.Column(db.Integer, primary_key=True)order_number = db.Column(db.String(20), unique=True, nullable=False)status = db.Column(db.String(20), nullable=False)user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)user = db.relationship('User', backref='orders')class ElectronicWaybill(db.Model):id = db.Column(db.Integer, primary_key=True)content = db.Column(db.String(255), nullable=False)order_id = db.Column(db.Integer, db.ForeignKey('order.id'), nullable=False)order = db.relationship('Order', backref='electronic_waybills')class RegistrationForm(FlaskForm):username = StringField('Username', validators=[DataRequired(), Length(min=4, max=20)])password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=60)])confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])role = SelectField('Role', choices=[('user', 'User'), ('admin', 'Admin')], default='user')submit = SubmitField('Register')def validate_username(self, field):if User.query.filter_by(username=field.data).first():raise ValidationError('Username is already in use.')@login_manager.user_loader
def load_user(user_id):return User.query.get(int(user_id))@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':username = request.form['username']password = request.form['password']user = User.query.filter_by(username=username).first()if user and user.password == password:login_user(user)return redirect(url_for('dashboard'))return render_template('login.html')@app.route('/logout')
@login_required
def logout():logout_user()return redirect(url_for('login'))@app.route('/register', methods=['GET', 'POST'])
def register():form = RegistrationForm()if form.validate_on_submit():user = User(username=form.username.data, password=form.password.data, role=form.role.data)db.session.add(user)db.session.commit()flash('Registration successful. You can now log in.', 'success')return redirect(url_for('login'))return render_template('register.html', form=form)@app.route('/dashboard')
@login_required
def dashboard():orders = Order.query.filter_by(user_id=current_user.id).all()order_list = [{'id': order.id, 'order_number': order.order_number, 'status': order.status} for order in orders]return jsonify({'orders': order_list, 'user_role': current_user.role})# 其他路由和功能可以根据需求添加
# ...if __name__ == '__main__':db.create_all()app.run(debug=True)
-- 创建 User 表
CREATE TABLE "user" (id INTEGER NOT NULL,username VARCHAR(20) NOT NULL,password VARCHAR(60) NOT NULL,role VARCHAR(20) NOT NULL DEFAULT 'user',PRIMARY KEY (id),UNIQUE (username)
);-- 创建 Order 表
CREATE TABLE order (id INTEGER NOT NULL,order_number VARCHAR(20) NOT NULL,status VARCHAR(20) NOT NULL,user_id INTEGER NOT NULL,PRIMARY KEY (id),UNIQUE (order_number),FOREIGN KEY(user_id) REFERENCES "user" (id)
);-- 创建 ElectronicWaybill 表
CREATE TABLE electronic_waybill (id INTEGER NOT NULL,content VARCHAR(255) NOT NULL,order_id INTEGER NOT NULL,PRIMARY KEY (id),FOREIGN KEY(order_id) REFERENCES "order" (id)
);
from your_app import db, User, Order, ElectronicWaybill# 创建用户
user1 = User(username='user1', password='password1', role='user')
user2 = User(username='user2', password='password2', role='admin')db.session.add_all([user1, user2])
db.session.commit()# 创建订单
order1 = Order(order_number='ORD123', status='Processing', user_id=user1.id)
order2 = Order(order_number='ORD456', status='Shipped', user_id=user2.id)db.session.add_all([order1, order2])
db.session.commit()# 创建电子面单
waybill1 = ElectronicWaybill(content='Content for order 1', order_id=order1.id)
waybill2 = ElectronicWaybill(content='Content for order 2', order_id=order2.id)db.session.add_all([waybill1, waybill2])
db.session.commit()

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

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

相关文章

深度学习——第1章 深度学习的概念及神经网络的工作原理

1.1 序言——探索智能机器 千百年来,人类试图了解智能的机制,并将它复制到思维机器上。 人类从不满足于让机械或电子设备帮助做一些简单的任务,例如使用滑轮吊起沉重的岩石,使用计算器做算术。 人类希望计算机能够自动化执行更…

医美店会员管理系统预约小程序作用是什么

医美在美业中占据着一定地位,爱美使然和经济独立、悦己消费下,不少女性会前往医美机构做脸部整容、嫩肤补水等服务,如美容院一样都是具备本地外地属性的,因此在如今互联网盛行下,商家需要借势线上破解难题及增强生意效…

【预测工具】不须编码的预测和数据可视化工具

有一天,我的同事问我,他应该如何做一个快速预测模型而不是Excel,并产生比线性回归或Excel图中的那些简单方程更好的结果。这是我的答案。 TableCurve 2D (Image by author) Sigmaplot很早以前就推出了这个软件。它已被广泛用于在数据中寻找最…

Structured Streaming: Apache Spark的流处理引擎

欢迎来到我们的技术博客!今天,我们要探讨的主题是Apache Spark的一个核心组件——Structured Streaming。作为一个可扩展且容错的流处理引擎,Structured Streaming使得处理实时数据流变得更加高效和简便。 什么是Structured Streaming&#…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、springboot分层架构、IDEA修改快捷键、vue代码风格

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)spring boot项目搭建、vue项目搭建、微信小程序项目搭建 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、sp…

python 图书馆选座小程序源码

开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索房间,轮播图&#xff0…

wordpress安装之Linux解压缩安装

本次教程是为了让大家少走弯路,可以更直观的去认识我们不懂的知识面。 首先我们安装解压缩的软件 命令如下: yum install -y unzip 上一篇我们讲到传输文件了 这篇我们把传输过来的压缩包解压并进行安装。follow me! 我们输入命令 unzi…

FDM3D打印系列——天秤座黄金圣斗士模型制作全过程视频

FDM打印天秤座黄金圣斗士全过程视频 大家好,我是阿赵。   这次带来的是天秤座黄金圣斗士模型的3D打印加后期加工的全过程。其实打印的过程之前都已经介绍过了,不过有朋友说想实际看看整个制作过程是怎样,所以我录了这个视频。   上完色之…

测试Centos上用Gunicorn启动的Django-Web服务在Django源文件有改变的情况下能否自动重载最新源码下的web服务

01-先上传最新的源码文件 参考博文 https://blog.csdn.net/wenhao_ir/article/details/134762966 进行 02-先在Django直接开web服务下修改源码测试 这是没有问题的,会自己重置。 03-开启gunicorn服务 cd /djangoproject/mmdj01/ gunicorn -c /djangoproject/mm…

一天一个设计模式---责任链模式

责任链模式 简介 将不同职责的步骤进行串联,前一个执行完成之后才可以执行下一个,即前一个的责任完成之后会将这个责任给到下一个。 组成结构 一共有两个主要的类 抽象的处理类(Handle),封装了每一个职责处理请求…

高斯日记(cpp+java)

高斯日记(选自2013 CA组) 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道&#xf…

【开源】前后端分离的在线考试系统,支持多种部署方式

在线考试系统 https://download.csdn.net/download/mo3408/88593116 在线考试系统是一种利用网络技术,实现在线出题、答题、阅卷、成绩查询等一系列考试活动的系统。它不受地理位置限制,可以实现远程考试,大大提高了考试的效率和便利性。此…

Spring MVC学习随笔-控制器(Controller)开发详解:接受客户端(Client)请求参数

学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 第三章、SpringMVC控制器开发详解 3.1 核心要点 💡 1. 接受客户端(client)请求参数[讲解] 2…

Docker的数据持久化;Docker网络;Dockerfile编写

Docker的数据持久化;Docker网络;Dockerfile编写; 文章目录 Docker的数据持久化;Docker网络;Dockerfile编写;**Docker的数据持久化**1)将本地目录映射到容器里2)数据卷3)将…

ARM架构安装RabbitMQ

1.查看centos内核版本 uname -a uname -r2.安装之前的准备工作 安装RabbitMQ必装Erlang(RabbitMQ官网添加链接描述) 2.1.Erlang简介 Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对…

国家数据局首次国考招聘12人

中央机关及其直属机构2024年度考试录用公务员报名已于10月15日开始,在公布的《中央机关及其直属机构2024年度考试录用公务员招考简章》中,新组建的国家数据局公布了所属五个用人司局的7类综合管理职位,定级机关司局一级主任科员及以下&#x…

前端知识笔记(十九)———px,em,rem,vw,vh之间的区别

一,px(像素):像素是屏幕上显示的最小单位,它是固定的,不随页面缩放而改变大小。在响应式设计中,使用像素单位可能会导致布局在不同屏幕尺寸上显示不一致。例如:现在在你电脑上一个字…

Qt将打印信息输出到文件

将打印信息&#xff08;qDebug、qInfo、qWarning、qCritial等&#xff09;输出到指定文件来以实现简单的日志功能。 #include "mainwindow.h" #include <QApplication> #include <QLoggingCategory> #include <QMutex> #include <QDateTime>…

day4 找到两个链表的交点

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* curA headA; ListNode* curB headB; int lenA 0, lenB 0; while (curA ! NULL) { // 求链表A的长度 lenA; curA curA->next; …

【Pytorch】Visualization of Feature Maps(4)——Saliency Maps

学习参考来自 Saliency Maps的原理与简单实现(使用Pytorch实现)https://github.com/wmn7/ML_Practice/tree/master/2019_07_08/Saliency%20Maps Saliency Maps 原理 《Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps》&…