django的ImageField没有提供控制上传图片的内置方法,我们可以在表单验证的过程中用clean函数来控制,搬运博客园 python小童鞋 ,可以通过重写ImageField的方法来控制上传图片大小。

1、在APP内建立fields.py文件

 1 from django.db.models import ImageField
2 from django.forms import forms
3 from django.template.defaultfilters import filesizeformat
4
5 class RImageField(ImageField):
6 def __init__(self, *args, **kwargs):
7 self.max_upload_size = kwargs.pop("max_upload_size", [])
8 super().__init__(*args, **kwargs)
9
10 def clean(self, *args, **kwargs):
11 data = super().clean(*args, **kwargs)
12 file = data.file
13
14 try:
15 if file.size > self.max_upload_size:
16 raise forms.ValidationError('上传图片大小不能超过 {}, 当期图片大小 {}。'
17 .format(filesizeformat(self.max_upload_size),
18 filesizeformat(file.size)))
19 except AttributeError:
20 pass
21 return data

2、在models.py中引用:

from APP.fields import RImageField 创建models的时候字段如下写就OK了,

from APP.fields import RImageField
......
image = RImageField(upload_to=upload_path_handler, max_length=256, max_upload_size=2621440, verbose_name='图片') #以字节为单位

django限制表单上传图片的大小的更多相关文章

  1. HTML+JS---限制表单多次提交

    限制表单多次提交: 表单只能提交一次 function check_form_data(){ $("#once_submit").attr("disabled" ...

  2. django创建表单以及表单数据类型和属性

    08.15自我总结 关于django的表单不同关系之间的创建 一.不同关系之间的创建 1.一对一 举例 母表:userinfo id name age 1 张三 12 2 李四 58 字表:priva ...

  3. wangEditor ie9 表单上传图片

    wangEditor ie9 表单上传图片  弹框无法消失  var resultText = $.trim(iframeWindow.document.body.innerHTML); result ...

  4. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  5. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  6. django from表单验证

    django from表单验证   实现:表单验证 工程示例: urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from djan ...

  7. django Form表单的使用

    Form django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form ...

  8. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  9. struts2上传图片超过大小给出错误提示

    struts2上传图片超过大小给出错误提示        今天碰到上传图片太大,上传不上去返回input视图的界面,回显的错误信息却是乱码,整了好久才整出来,在这里做个记录,方便自己以后查阅,也希望能 ...

  10. Bootstrap历练实例:表单控件大小

    表单控件大小 您可以分别使用 class .input-lg 和 .col-lg-* 来设置表单的高度和宽度. 实例: <!DOCTYPE html><html><hea ...

随机推荐

  1. 跳板攻击之: MSF 添加路由方式渗透内网

    跳板攻击之: MSF 添加路由方式渗透内网 目录 跳板攻击之: MSF 添加路由方式渗透内网 1 Metasploit 跳板攻击: 添加路由方式原理 2 实验环境 2.1 建立 meterpreter ...

  2. 浅拷贝导致的bug

    目录 深拷贝与浅拷贝区别 hutool BeanUtil.copyProperties 浅拷贝问题重现 实现深拷贝的一些工具 深拷贝与浅拷贝区别 在 Java 中,除了基本数据类型(元类型)之外,还存 ...

  3. css3自动滚动

    <!DOCTYPE html> <html lang="en"><div class="wrap"> <ul clas ...

  4. Vue学习笔记之Hello Vue

    1. 引言 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上 ...

  5. Java项目常用的异常处理

    一.常见异常形式 1.空指针异常(java.lang.nullpointerexception)发生该情况一般是字符串变量未初始化,数组未初始化,类对象未初始化等.还有一种情况是当该对象为空时你并没有 ...

  6. element导航栏组件封装递归调用

    element导航栏组件封装递归调用: https://blog.csdn.net/qq_21271511/article/details/109889934

  7. Python (进阶 第二部)

    目录 函数 闭包 匿名函数 迭代器 高阶函数 推导式 递归函数 函数 函数的定义:  功能( 包括一部分代码,实现某种功能,达成某个目的) 函数的特点:  函数可以反复调用 ,提高代码的复用性,提高开 ...

  8. python基本语法入门

    思维导图 https://gitee.com/starry-tong/python-data/blob/pyimage/day03.png python语法注释 """注 ...

  9. 利用socket以及多线程、文件流等方法实现通信,互发文本信息以及文件

    服务器端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...

  10. ubuntu安装nvidia-docker2

    1.配置源: distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.gi ...