项目概括

  本项目用于针对Django框架的练习,主要分为前端和后端两部分。前端负责用户注册、登录、商品展示以及添加购物车和显示订单列表的功能;后端负责会员信息、商品类别、商品信息的增删改查以及订单状态修改。

知识点总结

  一、Ajax(异步发送请求给后台)

  

// 参数以键值对的形式
$.ajax({
"type": "post"; //请求的方式,一般为post或者get
"url": "/test/" ; //请求的地址
"data": "{}" //携带参数,键值对,可以为空
"dataType": "json"; //返回结果的类型
success: function(data){
//成功执行的方法
} ;
error: function(){
//失败执行的方法
} })

  二、分页(导入django.core.paginator的Paginator包)

  

from django.core.paginator import Paginator

def index(pindex):
if pindex == "":
pindex = 1
user = Users.objects.all()
# 传入需要分页的对象,和每页显示数据的条数
p = Paginator(user,4)
# 获取页码列表
p_num = p.page_range
# 返回第pindex页的实例
pindex = int(pindex)
page = p.page(pindex) '''
判断当前页是否有上一页:page.has_previous
判断当前页是否有下一页:page.has_next
获取上一页的页码:page.previous_page_number
获取下一页的页码:page.next_page_number
'''

  三、密码以md5形式存储数据库

  

import hashlib

# 实例化md5对象
md5 = hashlib.md5()
# md5.update()方法的参数必须是字节型数据
md5.update(bytes(request.POST['password'],encoding="UTF-8"))
# 以16进制格式存储
md5.hexdigest() '''
这里有个坑必须注意:
md5.update()方法会将每次加密的字符进行拼接,所以每次加密前都要重新实例化一次md5实例
'''
import hashlib md5=hashlib.md5()
md5.update(''.encode('utf-8'))
print(md5.hexdigest())
# 输出结果:202cb962ac59075b964b07152d234b70
md5.update(''.encode('utf-8'))
print(md5.hexdigest())
# 输出结果:4297f44b13955235245b2497399d7a93 //有没有发现 和上面对字符串“123”md5加密后的结果不一样 md5=hashlib.md5() //重新定义md5
md5.update(''.encode('utf-8'))
print(md5.hexdigest())
# 输出结果:4297f44b13955235245b2497399d7a93 //发现123123 和上面的结果一样 就验证了 md5.update 是拼接的效果

  四、获取前台传输文件并写入到服务器

import os
import time def write_file(request):
try:
# 使用request.FILES得到上传的文件
pic = request.FILES.get("picture_name")
# 文件.name获取上传文件的名称
# 截取后缀
suffix = pic.name.split('.')[-1]
if suffix.lower() in ['jpg','png']:
# 格式化文件名
file_name = str(time.strftime('%Y%m%d%H%M%S',time.localtime())) + '.' + suffix
upload_path = 'myweb' + os.path.sep + file_name
# 以二进制格式写入文件
with open(upload_path,"wb+") as f:
# chunks():当上传文件比较大时可以采用此方法,先读取一部分内容加载到内存,写入到服务器,然后清空内存;如此重复,可以节省内存空间
for file in pic.chunks():
f.write(file)
context = {"info":"上传成功"}
else:
context = {"info":"上传格式有误!"}
except:
context = {"info":"请选择你要上传的图片!“}
return render(request,"myweb/info.html",context)

  五、模板

    1.模板继承

    {% extends 'myweb/base.html' %}

    需要写在所有的前面,即模板的最顶端

    

    2.加载静态文件

    {% load static from staticfiles %}

    在settings.py文件中配置静态文件路径

    

STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR,'/static/ STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), ]

    

    3. 模板填充

    {% block myblock %}

    {% endblock %}

  六、创建虚拟环境

  每次开始一个新的项目最好新创建一个独立的虚拟环境运行,防止多个项目之间环境不兼容。

  • anaconda虚拟环境搭建

    • 查看所有虚拟环境列表

           conda env list

    • 切换虚拟环境

      conda activate my_env

    • 查看当前虚拟环境安装包

      conda list

    • 创建新的虚拟环境

      conda create -n env_name python=x.x

    • 安装django

      pip install django==x.x

    • 虚拟环境中安装额外的包

      conda install -n env_name [package]

    • 删除虚拟环境

      conda remove -n env_name --all

    • 删除虚拟环境中的某个包  

      conda remove --name $env_name $package_name

  

python商城项目总结的更多相关文章

  1. django 商城项目之购物车以及python中的一些redis命令

    最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...

  2. python框架Django实战商城项目之工程搭建

    项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...

  3. Django商城项目笔记No.11用户部分-QQ登录1获取QQ登录网址

    Django商城项目笔记No.11用户部分-QQ登录 QQ登录,亦即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目. 若想实现QQ登录,需要成为QQ互联 ...

  4. Django商城项目笔记No.4用户部分-注册接口-图片验证码

    Django商城项目笔记No.4用户部分-注册接口-图片验证码 1.首先分析注册业务接口 1.1.分析可得,至少这么几个接口 图片验证码 短信验证码 用户名是否存在 手机号是否存在 整体注册接口 图片 ...

  5. Django商城项目笔记No.3用户部分-用户模型类

    Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...

  6. Django商城项目笔记No.2项目准备工作

    Django商城项目笔记No.2项目准备工作 接着上篇开始,创建好工程之后,随之而来的是怎么配置工程,这篇文章记录如何进行相关的配置 1.pycharm打开工程,进行相关的配置 通过pycharm打开 ...

  7. Github上的python开源项目

    Python开源项目,期待大家和我们一起共同维护 github排名榜单 https://github.com/trending github搜索榜单:https://github.com/search ...

  8. 凡客副总裁崔晓琦离职 曾负责旗下V+商城项目_科技_腾讯网

    凡客副总裁崔晓琦离职 曾负责旗下V+商城项目_科技_腾讯网 凡客副总裁崔晓琦离职 曾负责旗下V+商城项目 腾讯科技[微博]乐天2013年09月18日12:44 分享 微博 空间 微信 新浪微博 邮箱 ...

  9. 商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现

    前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要 ...

随机推荐

  1. MySQL内置方法

    distinct(去重) select distinct 字段 from 表名 select distinct age from employee; 四则运算 对筛选的结果进行四则运算 select ...

  2. spring事务之事务传播机制和隔离级别

    Spring事务传播行为 运用Spring事务,必须要深入理解它的传播机制,否则会遇到各种意想不到的坑,Spring定义了七种传播行为. public interface TransactionDef ...

  3. 2.RabbitMq-持久化

    RabbitMq-消息持久化 问题:怎样保证消息不因生产者gg而丢失我们知道了如何在消费者的角度保证消息不丢失,但如果生产者gg了呢,消息同样会丢失,生产者gg后会默认丢弃所有的消息,除非告诉它某些消 ...

  4. MAC ADDRESS

    可以使用手机Wifi或蓝牙的MAC地址作为设备标识,但是并不推荐这么做,原因有以下两点:硬件限制:并不是所有的设备都有Wifi和蓝牙硬件,硬件不存在自然也就得不到这一信息.获取的限制:如果Wifi没有 ...

  5. 第11组 Alpha冲刺(2/6)

    第11组 Alpha冲刺(2/6)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11860949.html 作业博客 https://edu ...

  6. Qt子窗口QMidSubwindow全屏出现的问题总结

    我的需求:想全屏一个子窗口QMidSubwindow,禁止显示最大化最小化和关闭按钮. 我开始尝试的是网上介绍的方法,把结果展现给大家一下,最后再总结: 方法1:QMidSubwindow直接调用sh ...

  7. shell远程操作另外一台机器上数据

    shell远程操作另外一台机器上的数据,有两种方式: 1 .配置免密登陆,2.使用sshpass 当前存在两台虚拟机,ip地址分别为:192.168.3.32 192.168.3.33 一.免密登陆操 ...

  8. vs2017+opencv配置参考链接

    本人通过以下几篇博客完成vs2017+opencv3.4.1的配置: OpenCV 3.4.1 + VS2017 开发环境搭建 - 简书 WIN10下 VS2017+OpenCv 3.4.1 配置 - ...

  9. Android网络编程之——文件断点下载

    一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connecti ...

  10. sqlserver2008 job设定

    数据同期: update owk ),td.) ,owk.RecordEndTime),td.) from openrowset( 'SQLOLEDB ', '172.17.1.14'; 'read' ...