Python 如何在通过注册上传的主页上显示图片?
在用户完成注册后,我无法为每个用户显示配置文件图片。上传到Python 如何在通过注册上传的主页上显示图片?,python,django,Python,Django,在用户完成注册后,我无法为每个用户显示配置文件图片。上传到/media/profile\u pictures文件夹后,我可以看到图片正在保存,但我找不到在主页上显示该图片的方法 请看代码示例。我是按照Tango with Django教程上传图片的,但是我在这里发现的问题以及与此问题相关的问题都没有真正帮助我 forms.py: class UserForm(forms.ModelForm): password = forms.CharField(widget=forms.PasswordI
/media/profile\u pictures
文件夹后,我可以看到图片正在保存,但我找不到在主页上显示该图片的方法
请看代码示例。我是按照Tango with Django教程上传图片的,但是我在这里发现的问题以及与此问题相关的问题都没有真正帮助我
forms.py
:
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ('username', 'email', 'password')
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('website', 'picture')
def register(request):
context = RequestContext(request)
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
if 'picture' in request.FILES:
profile.picture = request.FILES['picture']
profile.save()
registered = True
else:
print (user_form.errors, profile_form.errors)
else:
user_form = UserForm()
profile_form = UserProfileForm()
return render(request,'webapp/register.html', {'user_form': user_form, 'profile_form': profile_form, 'registered': registered})
class UserProfile(models.Model):
user = models.OneToOneField(User)
website = models.URLField(blank=True)
picture = models.ImageField(upload_to='profile_images', blank=True)
def __unicode__(self):
return self.user.username
views.py
:
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ('username', 'email', 'password')
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('website', 'picture')
def register(request):
context = RequestContext(request)
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
if 'picture' in request.FILES:
profile.picture = request.FILES['picture']
profile.save()
registered = True
else:
print (user_form.errors, profile_form.errors)
else:
user_form = UserForm()
profile_form = UserProfileForm()
return render(request,'webapp/register.html', {'user_form': user_form, 'profile_form': profile_form, 'registered': registered})
class UserProfile(models.Model):
user = models.OneToOneField(User)
website = models.URLField(blank=True)
picture = models.ImageField(upload_to='profile_images', blank=True)
def __unicode__(self):
return self.user.username
models.py
:
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ('username', 'email', 'password')
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('website', 'picture')
def register(request):
context = RequestContext(request)
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
if 'picture' in request.FILES:
profile.picture = request.FILES['picture']
profile.save()
registered = True
else:
print (user_form.errors, profile_form.errors)
else:
user_form = UserForm()
profile_form = UserProfileForm()
return render(request,'webapp/register.html', {'user_form': user_form, 'profile_form': profile_form, 'registered': registered})
class UserProfile(models.Model):
user = models.OneToOneField(User)
website = models.URLField(blank=True)
picture = models.ImageField(upload_to='profile_images', blank=True)
def __unicode__(self):
return self.user.username
设置.py
MEDIA_URL = '/media/profile_images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
home.html
:
<img src="{{ user.UserProfile.picture.url }}" width="240">
如果您使用小写字母
UserProfile
,我认为它会起作用:
<img src="{{ user.userprofile.picture.url }}" width="240">
委员会:
如果未指定OneToOneField
的参数,Django将使用当前模型的小写名称作为默认值
我已经修好了。对不起,这方面我还不太熟悉:)