我正在尝试使用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])