图书商城
项目实战介绍
项目:图书商城
技术: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 路径path
1。 人文社科 0 0,
2。 小说 0 0,
3。 经济管理 0 0,
4。 古籍 1 0,1,
5。 经部。 4 0,1,4,
6。 当代小说。 2
---
服务分类
id。 分类名。 父级ID。 路径path
1。 服装。 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();