Обычно вы не должны хранить данные изображения в вашей базе данных. Если вам необходимо загрузить и сохранить изображения, используйте ImageField
или FileField
и следуйте инструкциям из docs , чтобы сохранить изображение. Единственное, что вам нужно сделать, это:
form = FileUploadForm(request.POST, request.FILES)
if form.is_valid():
uploaded_file = FileUpload(
File_path=request.FILES['File_path'], # or whatever you've called the file input
File_name=form.cleaned_data['File_Name'],
Description=form.cleaned_data['Description'])
uploaded_file.save()
Было бы проще использовать ModelForm
в вашем случае, тогда вам нужно только сохранить форму:
if form.is_valid():
form.save()
Это автоматически сохранит файл правильным способом. Нет необходимости делать сохранение вручную, как вы делаете.
Для просмотра изображения так же просто, как это:
file_upload = FileUpload.objects.get(id=34)
file_url = file_upload.File_path.url # url relative to `MEDIA_ROOT`
# or in a template
{% load static %}
{% get_media_prefix %}{{ file_upload.File_path.url }}
Если вам действительно нужно сохранить изображения в виде двоичных двоичных объектов в вашей базе данных (но учтите, что это почти никогда не имеет смысла), используйте Django BinaryField
, как описано здесь .
Это также означает, что вам придется обрабатывать преобразование изображения из двоичного объекта в правильный файл изображения. Также подумайте о сохранении типа контента (image / jpg или image / png или image / webp), поскольку он вам понадобится для правильного воссоздания файла.