繁体   English   中英

Django:为什么图像字段不起作用

[英]Django: Why is the Image Field not working

再会,

我正在使用 Django 图像字段和用户 model 测试一些东西。 关键是任何用户都可以上传和更新个人资料图片。 但是当我 select 一张图片并按上传时,我收到消息'此字段是必需的。 所以就好像我没有选择任何东西一样。

\\照片.html

<form method="POST">
    {% csrf_token %}
    {{ form }}
    <button type="submit">Upload</button>
</form>

\\views.py

def photo_view(request):
    try:
        profile = request.user.userimage
    except UserImage.DoesNotExist:
        profile = UserImage(user=request.user)

    if request.method == 'POST':
        form = UserImageForm(request.POST, instance=profile)
        if form.is_valid():
            form.save()
            return redirect('/dashboard/user/profile')
    else:
        form = UserImageForm(instance=profile)

    return render(request, 'photo.html', {'form': form})

\模型.py

class UserImage(models.Model):
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL, default=None, null=True, on_delete=models.CASCADE)
    photo = models.ImageField(
        upload_to='images/', height_field=None, width_field=None, max_length=100)

    def __str__(self):
        return str(self.user)

\\设置.py

MEDIA_ROOT =  os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

我试过这个https://www.geeksforgeeks.org/imagefield-django-models/

有人知道解决方案吗? 或者在处理图像时我什至应该使用 ImageField 吗?

非常感谢: :-)

这里有两个问题:如果上传文件,需要指定enctype="multipart/form-data"

form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form }}
    <button type="submit">Upload</button>
</form>

此外,您需要将request.POSTrequest.FILES都传递给表单:

def photo_view(request):
    try:
        profile = request.user.userimage
    except UserImage.DoesNotExist:
        profile = UserImage(user=request.user)
    
    if request.method == 'POST':
        form = UserImageForm(request.POST, request.FILES, instance=profile)
        if form.is_valid():
            form.save()
            return redirect('/dashboard/user/profile')
    else:
        form = UserImageForm(instance=profile)

    return render(request, 'photo.html', {'form': form})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM