0
ユーザーが登録を完了した後、すべてのユーザーのプロフィール画像を表示する際に問題が発生します。 /media/profile_pictures
フォルダーへのアップロード後に画像が保存されているのがわかりますが、その画像をホームページに表示する方法が見つかりません。登録してアップロードした画像をホームページに表示するには?
コードサンプルをご覧ください。私は写真をアップロードするためにDjangoチュートリアルでTangoをフォローしていましたが、ここで見つけたこの問題に関連する質問は実際には役に立たなかった。
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')
views.py
:
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})
models.py
:
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
settings.py
MEDIA_URL = '/media/profile_images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
home.html
:
<img src="{{ user.UserProfile.picture.url }}" width="240">
そしてurls.py
に私はあなたがUserProfile
を小文字た場合、私はそれが動作すると思います
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
私はそれを修正しました。申し訳ありませんが、私はこれでかなり新しいです:) – alex