图书商城
项目实战介绍
项目:图书商城
技术:Django2.2 + python3.7+mysql5.7
特点:
- 完整的完成一个在线商城的全流程
- 多图上传,短信验证,阿里支付,云服务器部署
功能:
前台:
- 注册,登录,首页,列表,详情,购物车,订单,个人中心
后台:
- 登录,会员管理,图书分类,图书商品,订单,权限管理
设计数据字典:
数据字典就是根据项目的功能和要求,去设计对应的数据库,表和字段。
会员表 user
ID 用户名,密码,邮箱,手机号。。。。
项目结构搭建:
bookshop/├── bookshop│ ├── __init__.py│ ├── settings.py│ ├── urls.py│ └── wsgi.py├── manage.py├── myadmin│ ├── __init__.py│ ├── admin.py│ ├── apps.py│ ├── migrations│ │ ├── __init__.py│ ├── models.py│ ├── tests.py│ ├── urls.py│ └── views.py├── myhome│ ├── __init__.py│ ├── admin.py│ ├── apps.py│ ├── migrations│ │ ├── __init__.py│ ├── models.py│ ├── tests.py│ ├── urls.py│ └── views.py├── static│ ├── myadmin│ ├── myhome│ └── uploads└── templates├── myadmin└── myhome
后台开发:
会员管理:
查看会员列表,详情信息,禁用,【修改,删除,添加】
会员模型:
| 列名 | 字段 | 类型 | 说明 |
|---|---|---|---|
| ID | id | 主键 | |
| 用户名 | username | Varchar | |
| 密码 | Password | char(80) | |
| 手机号 | Phone | char(11) | 唯一索引 |
| 性别 | Sex | Tinyint | |
| 年龄 | Age | Tinyint | |
| 注册时间 | Additive | Datetime | |
| 最后登录时间 | Savetime | Datetime | |
| 状态 | Status | Tinyint | 默认0,1禁用, |
| 头像 | face_url | Varchar | 存储头像的路径 |
图书分类:
添加,列表,删除,编辑
图书分类模型:
| 列名 | 字段 | 类型 | 说明 |
|---|---|---|---|
| ID | id | 主键 | |
| 分类名称 | name | 字符串 | |
| 父级ID | Pid | 数字 | |
| 路径 | path | 字符串 |
图书分类:ID。 分类名称 父级ID 路径path1。 人文社科 0 0,2。 小说 0 0,3。 经济管理 0 0,4。 古籍 1 0,1,5。 经部。 4 0,1,4,6。 当代小说。 2---服务分类id。 分类名。 父级ID。 路径path1。 服装。 0。 0,2。 男装。 1 0,1,3。 女装。 1。 0,1,4。 男正装。 2。 0,1,2,5。 衬衫。 4。 0,1,2,4,
图书商品:
添加,删除,修改,列表
图书模型:
| 列名 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| ID | id | 主键 | |
| 所属分类 | typeid | 一对多 | |
| 书名 | title | ||
| 推荐语 | tuijian | ||
| 作者 | author | ||
| 出版社 | Publisher | ||
| 出版时间 | Pub_date | ||
| 定价 | Price | ||
| 库存数量 | Num | ||
| 国际书号ISBN | Isbn | ||
| 详情介绍 | Context |
图书封面图集模型:
| 列名 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 所属图书 | bookid | 一对多 | |
| 封面图url | img_url |
订单,
权限管理
分页优化
自定义模版标签
在应用中创建一个 templatetags 包
在templatetags包中 创建自定义模块 pagetag.py
在pagetag.py模块文件中,自定义标签或过滤器 ```python
/web/myadmin/templatetags/pagetag.py
from django import template
register = template.Library()
自定义过滤器
@register.filter def chuan_upper(val): return val.upper()
自定义 标签
@register.simple_tag def jia(a,b): return int(a)+int(b)
4.使用自定义的过滤器或标签```html<!-- index.html. 在使用自定义标签或过滤器时,需要导入 -->{% load pagetag %}{{ 'abc'|chuan_upper }}{% jia 1 2 %}
富文本编辑器
把ueditor作为项目中的应用,加入到项目中
ueditor整个拷贝到项目中,放到和manage.py同级目录中
修改web/settings.py文件中的应用配置,把ueditor加入到应用中
修改根路由文件,配置富文本编辑器的路由地址
path('ueditor/', include('ueditor.urls')),
- 把一下html代码加入到需要使用富文本编辑的html模版中
<!-- 加载编辑器的容器 --><script id="container" name="content" type="text/plain">这里写你的初始化内容</script><!-- 配置文件 --><script type="text/javascript" src="/ueditor/UE/ueditor.config.js"></script><!-- 编辑器源码文件 --><script type="text/javascript" src="/ueditor/UE/ueditor.all.js"></script><!-- 实例化编辑器 --><script type="text/javascript">var ue = UE.getEditor('container');</script>
- 注意css对富文本编辑器的影响
/static/myadmin/css/app.css. 379行
mysql存储过程
利用mysql存储过程,给会员表批量添加数据
\d //
create procedure p1()
begin
set @i=0;
while @i<1000 do
insert into myadmin_users values(null,concat('user',@i),'123446',concat('1370138',@i),1,20,'2020-01-08 06:45:44','2020-01-08 06:45:44',0,'/static/myadmin/img/user05.png');
set @i=@i+1;
end while;
end;
//
\d ;
call p1();
