Django отображение статического изображения через переменную из моделей, которая находится в объекте JSON
Я пытался отобразить изображение с помощью Django в моем HTML.
Обычно для отображения статического файла кто-то делает:
<img src="{% static 'user_profile_pics/pfp_2.jpg' %}" >
Этот статический файл изображения был сохранен в переменной picture в моем models.py.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
picture = models.TextField(max_length=500)
Пользователь выбирает изображение, которое он хочет выбрать в качестве изображения своего профиля. Ниже приведен файл views.py, в котором определение профиля имеет запрос JSON словаря с переменной picture, присвоенной модели profile.picture.
@login_required
def profile(request):
profile = Profile.objects.get(user = request.user)
return render (request, "profile.html", {"userinfo": {'bio': profile.bio, 'picture': profile.picture}})
def register(request):
if request.method == 'POST':
first_name = request.POST['first_name']
last_name = request.POST['last_name']
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
bio = request.POST['bio']
picture = request.POST['picture']
if password==confirm_password:
if User.objects.filter(username=username).exists():
messages.info(request, 'Username is already taken')
return redirect(register)
elif User.objects.filter(email=email).exists():
messages.info(request, 'Email is already taken')
return redirect(register)
else:
user = User.objects.create_user(username=username, password=password, email=email, first_name=first_name, last_name=last_name)
user.save()
profile = Profile(bio=bio, picture=picture, user=user)
profile.save()
return redirect('login_user')
else:
messages.info(request, 'Both passwords are not matching')
return redirect(register)
else:
return render(request, 'registration.html')
Далее, отображение биографии и фотографии внутри профиля html работает следующим образом.
<div id = "userprofiletext">
{% if user.is_authenticated %}
<a class="text" >Your Description is: , {{bio}}</a>
<img src= {{userinfo.picture}} />
{% endif %}
</div>
До внедрения JSON биография отображалась. Я полагаю, что что-то должно быть сделано в HTML, чтобы заставить его отображаться, и мне нужна помощь. Картинка при отображении на моей странице не регистрируется, но при отладке становится ясно, что 'picture' - это ссылка на файл картинки. Картинка на странице не отображается.
Я пытался разобраться с отображением биографии и фотографии, так как они были правильно переданы в модели. В верхней части страницы моего HTML файла также есть статическая строка django load.
Поместите {{userinfo.picture}}
в двойные кавычки
<img src="{{userinfo.picture}}" />