Django 图像上传

1 投票
2 回答
2173 浏览
提问于 2025-04-17 00:40

我在上传图片时遇到了问题。目前,选择的图片文件没有被复制到目标文件夹,也没有将这个文件的路径添加到数据库里。

下面是我的代码:

models.py:

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    avatar = models.ImageField(upload_to="avatar/")

form.py

class ProfileEditionForm(ModelForm):
    class Meta:
        model = UserProfile
        exclude = ('user')

view.py:

def index(request):
    if request.user.is_authenticated():
        user = User.objects.get(pk=request.user.id)

        if request.method == "POST":
            form = ProfileEditionForm(request.POST, request.FILES, instance=user)

            if form.is_valid():
                form.save()
                #return HttpResponseRedirect(reverse('profile_edit'))
        else:
            form = ProfileEditionForm(instance=user)

        return direct_to_template(request, 'profile_edit.html', { 'form' : form })
    else:
        return HttpResponseRedirect(reverse('main_page'))

提前谢谢你的帮助。

2 个回答

2

你在创建表单的时候,应该设置一个属性叫做 enctype,值要写成 "multipart/form-data"。如果不这样做,request.FILES 就不会有任何数据流,这样上传的文件就无法被处理。

1

你的ModelForm是和UserProfile模型绑定的,但你却用一个用户实例(instance=user)来创建它。

顺便说一下,request.user其实是通过用户的ID从数据库中获取的用户对象(User.objects.get(pk=request.user.id))。

撰写回答