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