django-form.errors和上傳文件
阿新 • • 發佈:2018-05-15
files model col get 這一 login .get clean erro
)
- 一.上傳文件:
- 在相應的模型裏面定義`FileField`或者是`ImageField`類型的字段,並且1.設置好`upload_to`參數來指定上傳的路徑.
- 如果是使用ImageField,會需要安裝一個依賴Pillow, Pillow是專門做圖片處理的一個python包
- 2.需要在`settings.py`文件中指定媒體路徑`MEDIA_ROOT`.
- django 中的文件存儲分為兩種
- 靜態文件存儲,一般是我們的JS、css、系統的圖片文件等
- 媒體文件存儲,一般是用戶上傳的圖片、文件數據,或大的文件或視頻等等
- 3.文件上傳需要在HTML代碼中的form表單中添加`enctype="multipart/form-data"`以及在views當中,使用`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和上傳文件