VS2019 开发Django(六)------Admin中图片上传
该篇继续完善在Django的管理界面上传图片,因为LazyOrders小程序中菜单需要展示图片,而不是一个文本路径,所以我们还需要继续改造一下。
1)安装pillow
cmd切到虚拟环境的安装目录,然后输入如下命令回车:
pip install Pillow
aaarticlea/png;base64,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" alt="" />
2)在settings.py中增加存放图片文件的根目录:这个路径可以随便给的,文件夹不存在,程序会自动创建
MEDIA_ROOT =r"C:\Users\wei\Desktop\Python\static\media" #os.path.join(BASE_DIR,'static/media')
3)在Menu中新增加字段:img_file = models.ImageField(upload_to='images/')
#菜单表
class Menu(models.Model):
menu_id = models.AutoField(primary_key=True,verbose_name='菜单ID')
category = models.ForeignKey(Category,on_delete=models.CASCADE)
menu_name = models.CharField(max_length=50,verbose_name='菜单名')
img_path = models.CharField(max_length=100,verbose_name='图片路径',default='')
img_file = models.ImageField(upload_to='images/')
price = models.DecimalField(max_digits=5, decimal_places=2,verbose_name='价格')
def __str__(self):
return self.menu_name
class Meta:
verbose_name_plural = '菜单'
4)迁移数据,因为之前我们已经添加了一些数据,在迁移过程中,因为是新增加字段,那么,已经有的数据,这个字段需要填充一个值,如果当时创建实体的时候没有给默认值,那么就会提示你要给默认值,当然我们也可以把表全部删了,然后找到数据迁移这个目录:D:\项目\local\DjangoLazyOrders\hello\migrations,然后把0001_initial.py文件删了,一切重新来。
5)测试,迁移成功之后,就可以测试了,保存成功之后,我们查看路径下已经有了我们刚刚选择上传的图片文件。
到这里,功能基本完成了,当然要直接作为微信小程序的管理端使用,还需要改造一下Api.WeiXin.LazyOrders这个Web Api接口,数据需要从数据库中获取,图片的获取需要与这个Django项目使用同一个文件夹。关于图片这里,最稳妥的方式是Web Api开放一个接口用来提供给Django项目上传图片,这样就不用要求必须部署在同一台服务器上了,这一块的优化,暂且放到后面,先不动这个Api项目,把Django的相关内容学习完,再来调整。
下一篇,继续学习Django中的视图,模板,使用bootstrap来布局UI,然后到表单的提交,实现增删查改....待续....
VS2019 开发Django(六)------Admin中图片上传的更多相关文章
- vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
一.前言 三年.net开发转前端已经四个月了,前端主要用webpack+vue,由于后端转过来的,前端不够系统,希望分享下开发心得与园友一起学习. 图片的上传之前都是用的插件(ajaxupload), ...
- 微信小程序中图片上传阿里云Oss
本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...
- ueditor编辑器插件 chrome中图片上传框延时问题
最近在项目中使用ueditor插件进行文字的在线编辑功能时,发现这个插件的图片上传弹框在chrome浏览器延迟非常的厉害.经过多方搜索,终于解决.现将解决方案记录如下: 1.修改/Ueditor/di ...
- js中图片上传,多次上传同一张不生效
在做图片上传的功能时, 使用删除功能删除了一张图片, 然后想重新上传原来删除的图片, 结果预览不显示, 也不能上传成功 解决办法, 在删除方法里置空input $("#id").f ...
- HTML5 开发APP(打开相册以及图片上传)
我们开发app,常常会遇到让用户上传文件的功能.比如让用户上传头像.我公司的业务要求是让用户上传支付宝收款二维码,来实现用户提现的功能.想要调用相册要靠HTML Plus来实现.先上效果图 基本功能是 ...
- python - django 使用ajax将图片上传到服务器并渲染到前端
一.前端代码 <!doctype html> <html lang="en"> <head> <meta charset="UT ...
- drupal form 中图片上传
1.创建url 链接到form $items['qianfeng/add'] = array( 'title' => t('加入信息'), 'page callback' =&g ...
- 如何解决markdown中图片上传的问题
1.第一种方式(图床) 1.1 google中的插件-新浪微博图床 2.第二种方式,操作流程如下 2.1 下载一个有道云笔记客户端 2.2 然后把图片通过有道云笔记分享出来,见下动态图 3.总结一下 ...
- thinkphp3.2.x版本中图片上传缩略图的解决方案
调用方式很简单 get_sc($cover_id,[$width=180,$height=auto,$cut]) @param $cover_id 图片ID___ @param $width 宽度__ ...
随机推荐
- 【前端】之AJAX基础知识
AJAX 简介 AJAX(Asynchronous JavaScript and XML),异步的JavaScript和XML AJAX不是编程语言,只是一种在无需重新加载整个网页的情况下能够更新部分 ...
- docker概念
一.docket概述 什么是docker? 为什么docker会出现 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不 ...
- ftp 客户端 上传
ps: 1.使用netkit-ftp-0.17交叉编译出来的ftp客户端, 2.然后写上传代码,调用ftp传服务器: 3.最好使用bin二进制文件形式传输: 4.ftp客户端和Ubuntu自带的ftp ...
- .NET Core Blazor 1-Blazor项目文件分析
.NET Core Blazor 1-Blazor项目文件分析 本节内容为Blazor的基本文件 简介 Blazor是一个使用.NET技术用于代替JavaScript/typescript的前端WEB ...
- vsftpd架设(配置pam模块)
Vsftpd 是很安全的ftp软件 VSFTPD的目录结构 /usr/sbin/vsftpd: VSFTPD的可执行文件 /etc/rc.d/init.d/vsftpd:启动脚本 /etc/vsftp ...
- 简单实现TodoList
Todolist实例 储备知识js的splice的用法 实例逻辑 1 在data里面做一个存一条条留言的列表,往里面添加或者删除留言内容. 2 做一个变量和input双向绑定,然后做一个点击事件把这个 ...
- 【我的物联网成长记8】超速入门AT指令集【华为云技术分享】
[摘要] 在物联网中,AT命令集可用于控制&调测设备.通信模块入网等.本文为您介绍NB-IoT常用的AT命令集及其调测工具. 什么是AT指令集 AT命令,用来控制TE(Terminal Equ ...
- 阿里巴巴主导的“华山版《Java 开发手册》”简介
1."83行代码计划"项目介绍(转自github): 2018年9月22日,在2018杭州云栖大会上,召开<码出高效:Java 开发手册>新书发布会,并宣布将图书所有收 ...
- OC 与js 互相调用
参考文章 iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 参考文章 http://www.jianshu.com/p/fd378c6d70c0 利用苹果原生的JavaScriptC ...
- Java修炼——多维数组
二维数组就是存储一维数组(内存地址/引用)的数组 二维数组的实始化 1) int intA[][]={{1,2},{2,3},{3,4,5}}; 2) int [][] intB=new int[3] ...