图书商城

项目实战介绍

项目:图书商城

技术:Django2.2 + python3.7+mysql5.7

特点:

  • 完整的完成一个在线商城的全流程
  • 多图上传,短信验证,阿里支付,云服务器部署

功能:

前台:

  • 注册,登录,首页,列表,详情,购物车,订单,个人中心

后台:

  • 登录,会员管理,图书分类,图书商品,订单,权限管理

设计数据字典:

数据字典就是根据项目的功能和要求,去设计对应的数据库,表和字段。

会员表 user

ID 用户名,密码,邮箱,手机号。。。。

项目结构搭建:

  1. bookshop/
  2. ├── bookshop
  3. ├── __init__.py
  4. ├── settings.py
  5. ├── urls.py
  6. └── wsgi.py
  7. ├── manage.py
  8. ├── myadmin
  9. ├── __init__.py
  10. ├── admin.py
  11. ├── apps.py
  12. ├── migrations
  13. ├── __init__.py
  14. ├── models.py
  15. ├── tests.py
  16. ├── urls.py
  17. └── views.py
  18. ├── myhome
  19. ├── __init__.py
  20. ├── admin.py
  21. ├── apps.py
  22. ├── migrations
  23. ├── __init__.py
  24. ├── models.py
  25. ├── tests.py
  26. ├── urls.py
  27. └── views.py
  28. ├── static
  29. ├── myadmin
  30. ├── myhome
  31. └── uploads
  32. └── templates
  33. ├── myadmin
  34. └── myhome

后台开发:

会员管理:

  1. 查看会员列表,详情信息,禁用,【修改,删除,添加】

会员模型:

列名 字段 类型 说明
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 存储头像的路径

图书分类:

  1. 添加,列表,删除,编辑

图书分类模型:

列名 字段 类型 说明
ID id 主键
分类名称 name 字符串
父级ID Pid 数字
路径 path 字符串
  1. 图书分类:
  2. ID 分类名称 父级ID 路径path
  3. 1 人文社科 0 0
  4. 2 小说 0 0
  5. 3 经济管理 0 0
  6. 4 古籍 1 01
  7. 5 经部。 4 014
  8. 6 当代小说。 2
  9. ---
  10. 服务分类
  11. id 分类名。 父级ID 路径path
  12. 1 服装。 0 0
  13. 2 男装。 1 01
  14. 3 女装。 1 01
  15. 4 男正装。 2 012
  16. 5 衬衫。 4 0124

图书商品:

添加,删除,修改,列表

图书模型:

列名 字段名 类型 说明
ID id 主键
所属分类 typeid 一对多
书名 title
推荐语 tuijian
作者 author
出版社 Publisher
出版时间 Pub_date
定价 Price
库存数量 Num
国际书号ISBN Isbn
详情介绍 Context

图书封面图集模型:

列名 字段名 类型 说明
所属图书 bookid 一对多
封面图url img_url

订单,

权限管理

分页优化

自定义模版标签

  1. 在应用中创建一个 templatetags 包

  2. 在templatetags包中 创建自定义模块 pagetag.py

  3. 在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)

  1. 4.
  2. 使用自定义的过滤器或标签
  3. ```html
  4. <!-- index.html. 在使用自定义标签或过滤器时,需要导入 -->
  5. {% load pagetag %}
  6. {{ 'abc'|chuan_upper }}
  7. {% jia 1 2 %}

富文本编辑器

把ueditor作为项目中的应用,加入到项目中

  1. ueditor整个拷贝到项目中,放到和manage.py同级目录中

  2. 修改web/settings.py文件中的应用配置,把ueditor加入到应用中

  3. 修改根路由文件,配置富文本编辑器的路由地址

    1. path('ueditor/', include('ueditor.urls')),
  1. 把一下html代码加入到需要使用富文本编辑的html模版中
    1. <!-- 加载编辑器的容器 -->
    2. <script id="container" name="content" type="text/plain">
    3. 这里写你的初始化内容
    4. </script>
    5. <!-- 配置文件 -->
    6. <script type="text/javascript" src="/ueditor/UE/ueditor.config.js"></script>
    7. <!-- 编辑器源码文件 -->
    8. <script type="text/javascript" src="/ueditor/UE/ueditor.all.js"></script>
    9. <!-- 实例化编辑器 -->
    10. <script type="text/javascript">
    11. var ue = UE.getEditor('container');
    12. </script>
  1. 注意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();