您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页python商城项目总结

python商城项目总结

来源:爱go旅游网
python商城项⽬总结

项⽬概括

  本项⽬⽤于针对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 Paginatordef 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('123'.encode('utf-8'))print(md5.hexdigest())

# 输出结果:202cb962ac59075b964b07152d234b70md5.update('123'.encode('utf-8'))print(md5.hexdigest())

# 输出结果:4297f44b13955235245b2497399d7a93 //有没有发现 和上⾯对字符串“123”md5加密后的结果不⼀样

md5=hashlib.md5() //重新定义md5md5.update('123123'.encode('utf-8'))print(md5.hexdigest())

# 输出结果:4297f44b13955235245b2497399d7a93 //发现123123 和上⾯的结果⼀样 就验证了 md5.update 是拼接的效果

  四、获取前台传输⽂件并写⼊到服务器

import osimport 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  

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务