python - 尝试在 Django 中上传图像时没有这样的文件或目录
问题描述
我在 Profile 模型上有一个 ImageField,因此用户可以上传图像。但是,当我尝试上传图片时,出现此错误:FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\name\\Documents\\Projects\\project\\media\\image.png'
. 当我查看数据库时,profile_image 字段被填充为“image.png”,但该文件没有出现在项目的任何文件夹中。
设置.py
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
DEBUG_PROPAGATE_EXCEPTIONS = True
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
网址.py
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模型.py
def validate_image(image):
file_size = image.file.size
limit_kb = 1000
if file_size > limit_kb * 1024:
raise ValidationError("Max size of file is %s KB" % limit_kb)
class Profile(models.Model):
...
profile_image = models.ImageField(upload_to='profile_images/', blank=True, null=True, validators=[validate_image])
视图.py
profile_form = ProfileForm(request.POST, request.FILES, instance=profile)
updatedProfile = profile_form.save(commit=False)
updatedProfile.save()
currentuser.email = request.POST['email']
currentuser.save()
messages.success(request, 'Profile successfully updated!')
return redirect('viewprofile', slug=profile)
表格.py
class ProfileForm(ModelForm):
class Meta:
model = Profile
fields = ['profile_image', ...]
模板
<label for="profile_image">Profile Image (size cannot exceed 1 MB)</label></p>
<input id="profile_image" type="file" class="" name="profile_image">
解决方案
利用<form enctype='multipart/form-data' action='action-url' >
推荐阅读
- javascript - 无法对嵌套 json 中的元素进行排序
- r - 计算威尔逊区间以绘制 R 中的二项式比例?
- javascript - 有一种方法可以减少在 Firebase 中的请求吗?
- sql - 如何删除一个重复行并将另一行保留在 SQL Server 中?
- sql - 带有通配符的 SQL Server 2019 LIKE 脚本在 MySQL 正常时不起作用
- python - 如何从维基百科页面摘要中提取链接?
- ruby-on-rails - Rspec:声明一个变量,该变量将作为记录创建到方法中
- javascript - 如何在另一个模型中使用猫鼬模型?
- html - 在拥有的远程服务器上实现自定义字体不起作用
- cygwin - Cygwin scp 目录路径