Django Admin实现上传图片校验功能


Posted in Python onMarch 06, 2016

 Django 为未来的开发人员提供了许多功能:一个成熟的标准库,一个活跃的用户社区,以及 Python 语言的所有好处。虽然其他 Web 框架也声称能提供同样的内容,但 Django 的独特之处在于它内置了管理应用程序 —— admin。

admin 提供了开箱即用的高级 Create-Read-Update-Delete (CRUD) 功能,减少了重复工作所需的时间。这是许多 Web 应用程序的关键所在,程序员可以在开发时快速浏览他们的数据库模型;非技术最终用户可以在部署时使用 admin 添加和编辑站点内容。

我的 models里有个ImageField字段,用来保存用户头像,希望通过Django Admin上传时校验头像大小,如果太大就报错,并且不保存。

网上有不少方法,有的通过第三方软件实现,有的通过自己写form验证,我觉得太复杂了,本身的要求也不高,只想要最简单的方法。

下面的方法是通过覆盖 admin.ModelAdmin 的 save_model()来校验图片大小,如果图片大于20K,就报错并且不保存:

from django.contrib import messages
class YourModeAdmin(admin.ModelAdmin):
...
def save_model(self, request, obj, form, change):
#不保存大图片
if obj.picture and obj.picture.size > 20480:
messages.set_level(request, messages.ERROR)
messages.error(request, 'The picture\'s too large. It\'s supposed smaller than 20K.')
else:
obj.save()

最后show一下实现好的django网站,感谢 andrew liu 的在线教程:

Django Admin实现上传图片校验功能

以上内容给大家介绍了Django Admin实现上传图片校验功能的相关知识,希望对大家以上帮助!

Python 相关文章推荐
使用python分析git log日志示例
Feb 27 Python
开源Web应用框架Django图文教程
Mar 09 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
对Python中gensim库word2vec的使用详解
May 08 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
记录Python脚本的运行日志的方法
Jun 05 Python
python日志模块logbook使用方法
Sep 19 Python
在python中做正态性检验示例
Dec 09 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
Django如何使用redis作为缓存
May 21 Python
django数据模型中null和blank的区别说明
Sep 02 Python
python如何通过protobuf实现rpc
Mar 06 #Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 #Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 #Python
Python多线程爬虫简单示例
Mar 04 #Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 #Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 #Python
用Python编写简单的微博爬虫
Mar 04 #Python
You might like
Protoss兵种对照表
2020/03/14 星际争霸
PHP文件锁定写入实例解析
2014/07/14 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
js函数的延迟加载实现代码
2012/10/11 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Python切片操作深入详解
2018/07/27 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
中专毕业生自荐信
2013/11/16 职场文书
四群教育工作实施方案
2014/03/26 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
培训科主任岗位职责
2014/08/08 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python