Django ImageField上传

时间:2013-11-28 23:46:25

标签: django-models

我正在尝试使用Django ImageField来允许用户上传个人资料图片。但是,在浏览图像后,当我尝试更新配置文件时,图片上载从文件名更改为“未选择文件”,并且我收到“此文件是必需的”错误。 如果它有帮助,我跟着this tutorial。我确实理解他使用了两个字符字段,但我试图将其更改为处理FileFields。从this one on stack overflow等其他问题,我知道表单需要一个request.FILES。

这是我的 Views.py

@login_required
def user_profile(request):
    if request.method == 'POST':
        form = UserProfileForm(request.POST, request.FILES, instance=request.user.profile)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/loggedin')
    else:
        user = request.user
        profile = user.profile
        form = UserProfileForm(instance=profile)

    args = {}
    args.update(csrf(request))

    args['form'] = form

    return render_to_response('profile.html', args)  

此外,我在我的设置中有这两行。

AUTH_PROFILE_MODULE = 'userprofile.UserProfile'
MEDIA_ROOT = 'E:\Pictures\django_stuff'

如果还有其他需要,请告诉我。

按照Erny的要求

Forms.py

from django import forms
from models import UserProfile

class UserProfileForm(forms.ModelForm):

    class Meta:
        model = UserProfile 
        fields = ('logo', 'description')

Models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    logo = models.ImageField(upload_to = 'photos')
    description = models.TextField()

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

0 个答案:

没有答案