本项目前端采用vue-cli的脚手架,后端采用Flask的Web框架。项目通过完成用户管理、权限管理、商品管理、订单管理、统计管理等功能,综合了前后端的知识,希望使大家都能受益。

1、使用到的技术如下所示。

前端技术:

  • Vue              前端框架
  • Element-UI        UI框架
  • Axios              发送请求
  • Echarts        绘制图表

后端技术:

  • Python主流语言
  • flask  web框架
  • MySQL存储主要数据
  • Redis存储缓存数据

2、项目需求

3、vscode创建flask基本框架。

vscode可以网上下载安装,也可以可以关注公众号:呆呆的clearlie,回复:vscode即可下载。

打开VSCode,创建一个新的文件夹,命名为flask_shop

在python控制台中创建虚拟环境:mkvirtualenv  shop_env。将环境切换为虚拟环境,在这里可能会出现相关bug,可参考:https://www.cnblogs.com/clearlie/p/13186447.html

切换到虚拟环境后,在控制台输入:pip install flask 安装flask框架。

在flask_shop文件夹下面创建一个manager.py文件,在文件中输入以下代码。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
return "hello world" if __name__ == "__main__":
app.run()

运行该文件夹,将网址输入到浏览器中,看到"hello world"输出的结果,说明一切准备就绪,可以进行接下来的操作。

4、数据库参数的配置。

我们配置的是MYSQL数据库,其连接方式如下:

from flask import Flask
import os app = Flask(__name__) class Config:
# 配置MySQL参数
MYSQL_DIALECT = 'mysql'
MYSQL_DIRVER = 'pysql'
MYSQL_NAME = 'root'
MYSQL_PWD = ""
MYSQL_HOST = 'localhost'
MYSQL_PORT = ''
MYSQL_DB = 'shop_env'
MYSQL_CHARSET = 'utf8mb4' SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
SQLALCHEMY_TRACK_MODIFICATIONS = True # 应用于加密
SECRET_KEY = os.urandom(16)
DEBUG = True app.config_from_object(Config) @app.route("/") def index():
return "hello world" if __name__ == "__main__":
app.run()

5、安装基本的flask插件。

在控制台输入以下命令安装,同时初始化数据库。

pip install flask_sqlalchemy

pip install flask_script

pip isntall flask_migrate

在manager.py文件中导入相关的插件函数,并进行初始化,新增代码如下:

from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager app = Flask(__name__) class Config:
  ...
app.config.from_object(Config) db = SQLAlchemy(app) manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand)

...

6、拆分项目结构

接下来我们将manager.py里的内容进行拆分,拆分代码的目的在于是不同的代码位于不同的文件里,各司其职。

在FLASK_SHOP新建一个flask_shop的python包和config的python文件,在flask_shop下再建一个user的python包和视图view.py文件,python包即含一个__init__.py初始化文件的文件夹。其相关文件如下:

把之前的数据库配置代码移到配置文件config.py里,如下所示:

import os

class Config:
# 配置MySQL参数
MYSQL_DIALECT = 'mysql'
MYSQL_DIRVER = 'pysql'
MYSQL_NAME = 'root'
MYSQL_PWD = ""
MYSQL_HOST = 'localhost'
MYSQL_PORT = ''
MYSQL_DB = 'shop_env'
MYSQL_CHARSET = 'utf8mb4' SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
SQLALCHEMY_TRACK_MODIFICATIONS = True # 应用于加密
SECRET_KEY = os.urandom(16) # 定义一个开发模式的类
class DevelopmentConfig(Config):
DEBUG = True class ProductionConfig(Config):
pass config_map = {
"develop": DevelopmentConfig,
"product": ProductionConfig,
}

在配置文件中我们新增了两个类,一个开发模式,一个生产模式,同时使用config_map字典进行存储。

manager.py的文件主要用于撰写控制操作程序,代码更新如下:

from flask_shop import create_app
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from flask_shop import db app = create_app("develop") manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand) if __name__ == "__main__":
app.run()

flask_shop初始化文件下的代码如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config_map db = SQLAlchemy() def create_app(config_name):
app = Flask(__name__)
obj = config_map.get(config_name)
app.config.from_object(obj)
db.init_app(app) # 引入注册蓝图
from flask_shop.user import user
app.register_blueprint(user) return app if __name__ == "__main__":
app.run()

user的初始化文件如下:

from flask import Blueprint

user = Blueprint('user', __name__,  url_prefix='/user')
from . import view

视图函数view.py的代码如下:

from flask_shop.user import user

@user.route("/")
def user():
return "hello, boy!!!"

运行manager.py文件,在浏览器输入http://127.0.0.1:5000/user/,可以看到以下结果:

现在flask框架的基础配置我们已经完成了,接下来就是相关的功能开发。

01-flask电商项目开发基础配置的更多相关文章

  1. Spring Boot微服务电商项目开发实战 --- 基础配置及搭建

    根据SpringBoot实现分布式微服务项目近两年的开发经验,今天决定开始做SpringBoot实现分布式微服务项目的系列文章,帮助其他正在使用或计划使用SringBoot开发的小伙伴们.本次系列文章 ...

  2. SpringBoot微服务电商项目开发实战 --- 模块版本号统一管理及Redis集成实现

    上一篇文章总结了基于SpringBoot实现分布式微服务下的统一配置.分环境部署配置.以及服务端模块的分离(每一个提供者就是一个独立的微服务).微服务落地.Dubbo整合及提供者.消费者的配置实现.本 ...

  3. SpringBoot微服务电商项目开发实战 --- api接口安全算法、AOP切面及防SQL注入实现

    上一篇主要讲了整个项目的子模块及第三方依赖的版本号统一管理维护,数据库对接及缓存(Redis)接入,今天我来说说过滤器配置及拦截设置.接口安全处理.AOP切面实现等.作为电商项目,不仅要求考虑高并发带 ...

  4. SpringBoot微服务电商项目开发实战 --- Redis缓存雪崩、缓存穿透、缓存击穿防范

    最近已经推出了好几篇SpringBoot+Dubbo+Redis+Kafka实现电商的文章,今天再次回到分布式微服务项目中来,在开始写今天的系列五文章之前,我先回顾下前面的内容. 系列(一):主要说了 ...

  5. Spring Boot微服务电商项目开发实战 --- 分布式开发要避的那些坑

    今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...

  6. SpringBoot微服务电商项目开发实战 --- 全局异常处理

    上一篇文章讲了Redis缓存的安全防范及Kafka的接入及消息实现,今天接着前面的内容基础说说项目的优化和基础配置,今天要讲的内容主要是Spring Boot项目中的全局异常处理.为什么要做这件事呢? ...

  7. SpringBoot微服务电商项目开发实战 --- Kafka集成接入

    kafka作为消息中间件的一款产品,她比较轻量级,在吞吐量方面很优秀,默认消息持久化到硬盘当中 168小时=7天,log.retention.hours=168,比较适合来做运营的统计.其他的不多讲, ...

  8. Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现

    昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...

  9. SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现

    SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家.比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+ ...

随机推荐

  1. Spring Boot 把 Maven 干掉了,拥抱 Gradle!

    在国外某社交网站上有一个关于迁移 Spring Boot 迁移 Maven 至 Gradle 的帖子: 该贴子上也有很多人质疑:Maven 用的好好的,为什么要迁移至 Gradle? 虽然该贴子只是说 ...

  2. skynet 初步分析

    自己想实现一个tcp 粘包,残包的功能.  先看看一些开源的库是怎么实现的. 首先开启一个线程.使劲的执行: skynet_socket_poll skynet_socket_poll  这个玩意是干 ...

  3. SpringCloud(一)版本选择

    Springboot版本 官网:https://spring.io/projects/spring-boot 在官网上 springboot已经更新到最新2.2.6 Spingcloud版本 官网:h ...

  4. Linux常用命令之文件磁盘管理

    前言 本文知识点是曾经学习过程中收录整理的,方便学习使用. 一>Linux常用基本命令 Linux命令格式:command [-options] [parameter1] ... command ...

  5. JVM之HotSpot虚拟机是如何发起内存回收的?

    1.背景 在上一节中,我们掌握了垃圾收集的一些算法,也弄明白了分代回收的原理, 那么HotSpot虚拟机是如何发起内存回收的? 2.如何找到GC Roots根节点(枚举根节点) 从可达性分析中GC R ...

  6. C# 人脸识别库

    .NET 人脸识别库 ViewFaceCore 这是基于 SeetaFace6 人脸识别开发的 .NET 平台下的人脸识别库这是一个使用超简单的人脸识别库这是一个基于 .NET Standard 2. ...

  7. WPF中的Data Binding调试指南

    大家平时做WPF开发,相信用Visual studio的小伙伴比较多.XAML里面曾经在某些特殊版本的Visual Studio中是可以加断点进行调试的,不过目前多数版本都不支持在XAML加断点来调试 ...

  8. linux查看当前目录下,各文件夹大小

    du -lh --max-depth=1

  9. vue全家桶(2.3)

    3.4.嵌套路由 实际生活中的应用界面,通常由多层嵌套的组件组合而成.同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如: 再来看看下面这种更直观的嵌套图: 接下来我们需要实现下面这种 ...

  10. 浅谈MySQL数据库

    目录 什么是数据库 定义 发展现状 数据库基本概念 数据库分类 关系数据库 非关系型数据库(NoSQL) 数据库启动与连接 启动服务端 连接数据库 用户信息查看 数据库的基本操作 表的基本操作 记录的 ...