django-form.errors和上传文件
Posted .Tang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-form.errors和上传文件相关的知识,希望对你有一定的参考价值。
- 一.上传文件:
- 在相应的模型里面定义`FileField`或者是`ImageField`类型的字段,并且1.设置好`upload_to`参数来指定上传的路径.
headshot = models.ImageField(u‘头像‘, upload_to="upload/%Y/%m/%d") # 上传的路径,django自己创建路径
- 如果是使用ImageField,会需要安装一个依赖Pillow, Pillow是专门做图片处理的一个python包
pip install Pillow
- 2.需要在`settings.py`文件中指定媒体路径`MEDIA_ROOT`.
MEDIA_ROOT = "media/"
ps: 这里是媒体文件,它也是一种静态文件,在django中,这一块的内容是要跟其它静态文件分开处理的
- django 中的文件存储分为两种
- 静态文件存储,一般是我们的JS、css、系统的图片文件等
- 媒体文件存储,一般是用户上传的图片、文件数据,或大的文件或视频等等
- 3.文件上传需要在HTML代码中的form表单中添加`enctype="multipart/form-data"`以及在views当中,使用`request.FILES`来接收文件.
form = LoginUserForm(request.POST, request.FILES)
- 文件只有在保存时才会处理,数据库保存的是文件的路径,不会保存文件本身.
- 二.表单错误消息:
- 表单验证没有通过后,表单会产生一个`errors`属性,这个属性包括所有的验证错误信息。
- 通过`form.errors`即可访问。
- 通过`form.erros.属性名`访问对应的错误
- 通过`form.errors.as_json()`可以将错误消息转换成json数据。
- 自定义错误消息:在`Field`中添加一个`error_messages`的`dict`类型的参数,然后根据`属性名`设置对应的`message`,例如以下代码:
- 必须要执行完is_valid函数,否则errors是不会包含错误
- 表单自定义错误消息:
- 在表单中,重写方法`clean_field`(field是一个属性名),可以自定义针对某一个`field`的验证机制,如果出现错误
- 如果某个`field`出现验证错误,通过`add_error`方法给指定的field添加错误消息。
- 直接抛出一个`raise ValidationError(message, code="属性名")`就可以了。
- 重写`clean`方法会在先完成`django`默认的验证后,再重新执行`clean`方法的验证
- 如果验证完成成功了,则直接返回当前值
def clean_password(self): password = self.cleaned_data.get(‘password‘,None) if len(password) < 6: raise forms.ValidationError(u‘password at least 6 length‘,code=‘min_length‘) return password
以上是关于django-form.errors和上传文件的主要内容,如果未能解决你的问题,请参考以下文章
使用超链接和后台Servlet实现文件上传和下载(附图和代码)