Django母婴商城项目从0到1
Django母婴商城项目从0到1
母婴商城
主页
后端数据库查询
locals():将定义的所有变量传到模板文件index.html 列表生成式:查出一级分类下的二级分类 types__in = cl:此类型包含于cl列表
前端
静态文件和媒体文件
静态文件:{% load static %} --> {% static '' %} 媒体文件:{{ clothe.img.url }}: clothe:数据库的一条记录,循环出来的对象 img:字段,值为url,media下的地址,不加media url:django语法,会将其渲染为访问媒体资源的url
模板文件
pic1:循环展示数据,根据forloop.counter(循环次数)决定展示前4条数据 pic2:循环展示数据,根据forloop.counter(循环次数)决定展示后4条数据 pic3:layui一个前端框架(已不更新),实现轮播图的使用方法
导航栏是否选中样式
根据后台传入的classContent的值来决定是否有class="active"属性
商品页
后端数据库查询
# 根据模型Types生成商品分类列表:用于前端循环渲染 Types.objects.values("firsts").distinct():根据firsts去重,选每个firsts的第一个作为QuerySet的元素 # 获取请求参数: t:商品分类 s:排序类型 p:当前页数 n:模糊查询 # 根据请求参数查询商品信息 # 分页功能: 固定语法,django自带功能,需要导入最上面的3个包 含义: 将查到的所有商品信息(QuerySet)进行分页,每页6条数据 try:第p页的数据 except PageNotAnInteger:显示第一页的数据 except EmptyPage:显示最后一页数据
前端
js实现相关页面样式
休整一下,js加引号
layui一个前端框架,使用得引入layui那个文件夹,好像还用到了一个mm.js文件 如: 生成分页条代码:在id=demo0的div里生成,生成完,f12复制粘贴到id=demo0的div里,再注释即可 一级二级分类样式
导航分类
将超链接地址进行修正
商品列表
commodityInfos|length:过滤器,这个QuerySet的长度 p.price|floatformat:'2':过滤器,保留两位小数 {% url 'commodity:detail' p.id %}:链接到主路由commodity下的子路由detail,并传参p.id pages.object_list:page对象的全部数据
分页
排序
修改超链接地址,地址的请求参数不同获得的商品数据不同 根据class修改选中样式
搜索
1. 修改超链接地址 2. input标签 name="n" 3. button带一个submit属性,让其将input标签相关数据提交到action属性中
shopper子路由
分别实现: 登录注册逻辑 个人中心 购物车 退出 支付
登录注册逻辑
cookie和session
cookie存放sessionID和不私密信息,存放于用户端 与sessionID对应的session存私密信息,存放于服务器端 注册:输入用户名、密码、手机号、验证码,生成session存放于服务器端 登录:输入用户名、密码,若用户名、密码正确,生成cookie,其中sessionID与之前注册生成的session相对应
登录注册逻辑需引入的包
支付相关方法需要引入相关包,否则报错 支付相关方法上面的包是django自带的
后端loginView
LoginModelForm(data=request.POSST):传入data属性 form.py中利用data属性编写 数据清洗的方法 authenticate函数是Django中用于验证用户身份的函数之一。它的作用是根据提供的用户名和密码,在认证后端中查找相应的用户,并验证密码是否匹配。 具体来说,authenticate函数会遍历所有已配置的认证后端(例如数据库后端、LDAP后端等),尝试使用提供的用户名和密码进行认证。如果找到了匹配的用户,并且该用户的密码也与提供的密码匹配,则authenticate函数会返回对应的用户对象;否则,返回None。 authenticate函数的常见用法是在用户登录时使用,通过验证用户名和密码来判断用户身份是否合法。如果验证成功,则可以调用login函数将用户标记为已登录状态。 authenticate函数向数据库中的用户表去查找用户。在Django中,默认情况下,用户表名为auth_user,对应的模型是django.contrib.auth.models.User。这个表存储了用户的基本信息,包括用户名、密码(经过哈希处理)、邮箱等。 当你调用authenticate函数时,它会在auth_user表中查找与提供的用户名匹配的用户记录,并验证密码是否正确。这是Django默认的认证后端行为,你也可以通过配置来修改默认的认证后端,使用自定义的用户模型或认证后端。 login方法,将user的id写入服务器端session中,后续可通过request.user.id获取用户id,如获取相关信息进行支付功能,花的就是这个用户的钱
form.py用于实现登录页面 输入框
前端页面使用
自动生成对应的input标签
前端表单提交: 用的是一个layui开源前端框架的表单,用的是他的提交方法 使用时查看其官方文档
解决跨域请求问题, 增加csrf参数
添加一个p标签,用于显示提示信息 并在ajax请求的回调函数里将提示信息放到p标签中
退出
清楚session并退出,如果没有退出,一直待机,那么session也应该有一个默认的有效期,到期后就需要重新登录。 还可以登录时设置7天免登录,将session的有效期设置为7天 reverse将'shopper:login'转换为url格式 redirect页面重定向(页面跳转)
个人中心
模型层
购物车表
订单表
Meta相关信息:用于后台设置,如后台显示表名为verbose_name的值 choices=STATE:一个关系映射,数据库中存储更少的数据来映射到相应的数据
控制层
ShopperView:个人中心
视图层
自己团一下就好 目前前端框架:layui 和 vue 本质一样,都有现成的组件(html+css),也提供了自己写js该怎么写
购物车
模型层
购物车表
控制层
视图层
通过商品id 对字典进行查询 获取到商品对应的数量 也就是说:根据一个变量查询到字典对应key的值 要用自定义过滤器(get_item)
自定义模板过滤器,模板文件可以使用其对数据进行处理
js实现: 单个商品总价格 随改商品数量加减进行求和, 总价格也随之变化
支付
控制层
the_time:当前时间 payInfo:订单信息 结算的话 就将当前时间和订单信息存入session中用于生成订单 return_url:支付成功后跳转的页面 url就是支付成功后跳转的页面,也就是return_url
个人中心中,根据支付成功传过来的参数进行订单的生成
get_pay方法
安装对应的aliyun支付相关包:pip安装会失败,因为其中一个依赖包(pycrypto
)不兼容win10,所以采取以下步骤进行安装下载.gz包,进行解压
解压之后,将setup.py中第47行中的pycrypto改为crypto
输入python .\setup.py install进行安装
django自带后台系统
0/500
Twikoo Management Panel