Django - Чтобы функция внутри функции представления автоматически возвращала ответ пользователю в случае ошибки?
Итак, у меня есть запрос на пост, который получает загруженное видео и затем проверяет его. В идеале я бы хотел, чтобы validate_video_upload()
возвращал ответ 400
, если размер видео превышает допустимый, а не выдавал ошибку валидации, потому что я хотел бы уведомить пользователя о том, что видео слишком большое. Как мне настроить его так, чтобы если validate_video_upload()
вернет ответ, он просто вернул вызов со статусом и сообщением, а если ответа не будет, то он просто продолжит работу в обычном режиме?
View.py
def post(self, request):
if 'video' in request.FILES.keys():
vid = request.FILES.get('video')
validate_video_upload(vid)
function.py
def validate_video_upload(file):
if not is_valid_file_of_format(file._name, VALID_VIDEO_EXTENSIONS):
raise ValidationError("Video file format is invalid")
if file.size>2296000000:
raise ValidationError("Maximum size allowed for a video is 287 mb")
Возможен вариант, при котором функция validate_video_upload будет возвращать значение, указывающее на то, была ли загрузка файла успешной или нет. Таким образом, ваше представление будет знать, следует ли ему возвращать ответ 400 или нет.
def validate_video_upload(file):
if not is_valid_file_of_format(file._name, VALID_VIDEO_EXTENSIONS):
return False
if file.size>2296000000:
return False
return True
def post(self, request):
if 'video' in request.FILES.keys():
vid = request.FILES.get('video')
valid_video = validate_video_upload(vid)
if not valid_video:
return HttpResponse(status=400)
# functionality to upload a valid video here