码迷,mamicode.com
首页 > Web开发 > 详细

django-form.errors和上传文件

时间:2018-05-15 14:02:03      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:数据库   重写   文件的   创建   self   messages   multi   djang   pos   

  • 一.上传文件:
    • 在相应的模型里面定义`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(upassword at least 6 length,code=min_length)
        return password

 

django-form.errors和上传文件

标签:数据库   重写   文件的   创建   self   messages   multi   djang   pos   

原文地址:https://www.cnblogs.com/tangpg/p/9040491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!