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

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

时间: 2024-10-08 17:45:34

django-form.errors和上传文件的相关文章

django Form组件 上传文件

上传文件 注意:FORM表单提交文件要有一个参数enctype="multipart/form-data" 普通上传: urls: url(r'^f1/',views.f1), url(r'^f2/',views.f2), views: def f1(request): if request.method == "GET": return render(request,'f1.html') else: import os #导入os模块 #request.get /

django实现分片上传文件

目标:利用django实现上传文件功能 1,先设置路由系统 urls.py from django.conf.urls import url,include from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^upload/$', views.upload), ] 2,配置html模板文件(前端页面展示) template

Django session cookie 上传文件、详解

session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'csvt11.views.home', name='home'), # url(r'^blog/', include('blog

Django配置用户上传文件夹和暴露后端文件夹资源

网站所用的静态文件我们都默认存放到static文件夹下,而用户上传的文件也是静态资源,我们需要找一个公共的地方专门存储用户上传的静态文件. 针对用户上传的不同文件,保存到指定的文件夹下. media配置专门用来指定用户上传的静态文件存放路径 1.配置文件中书写以下代码 # settings.py MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 用户上传的文件就会保存到该文件夹下 # media是文件夹的名字,可以自定义,一般使用media作为名字 当

在XShell中使用sz和rz命令下载和上传文件

输入命令:sz filename 回车后弹出一个"浏览文件夹"对话框中,选择保存目录 END 使用rz上传文件 输入命令: rz 回车后弹出一个对话框,选择一个或多个文件,选择"打开" 3 上传到服务器的路径为当前执行rz命令的目录,输入命令: dir 查看上传的文件 END

使用libcurl POST数据和上传文件

为了具有通用性,将文件的内容读到了fc变量中,fclen是fc的长度.fc也可以是任何其它内容.curl 是 libcurl句柄.演示省略了很多显而易见的步骤. 1. 普通的post请求,这里用curl_easy_escape对fc做了编码 std::string data("req=plain"); data.append("&file="); char *efc = curl_easy_escape(curl, fc, fclen); data.appe

Yii使用CForm类(Form builder)上传文件

模型(model) 首先需要一个文件上传的模型:FileUpload.php <?php class FileUpload extends CFormModel { public $image; /** * @return array validation rules for model attributes. */ public function rules() { return array( //note you wont need a safe rule here array('image

Jquery.form异步上传文件常见问题解决

Jquery.form常用方法我就不多说,主要说一下在使用过程中碰到的问题 1.提示 “xxxx” is not define 或者"xxx" is not a function 这种就检查下自己的代码,哪里粗心写错了单词,路径写的不正确,引用错了文件等等 2.使用ajaxForm函数写好方法后,点击按钮无反应 这种问题需要把按钮type="button"设置成 type="submit" 并且需要将按钮放置到<form></f

vue+axios通过formdata提交参数和上传文件

demo.vue 文件 <template> <div class="demo"> <input v-model="importForm.month" type="text" name="month"/> <input ref="importFile" type="file" name="importFile" @change