Как получить изображение для отображения с помощью Python Django? - PullRequest
0 голосов
/ 01 июля 2019

В настоящее время я пытаюсь получить изображение профиля для отображения на веб-странице, которую я создаю с использованием Django.Я следовал некоторым урокам, но изображение все еще не показывается.Я думаю, что проблема небольшая, но я не могу найти то, что мне нужно изменить или добавить в мой код, чтобы получить изображение для отображения.Я создал медиа-папку внутри корневого каталога проекта.В папке media есть папка profile_pics.Я также добавил файл default.jpg в папку мультимедиа.

---- Это MEDIA_ROOT и MEDIA_URL в settings.py ------

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

--- Это конец моего файла urls.py------

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, 
document_root=settings.MEDIA_ROOT)

--- Это модель, которая содержит изображение для отображения ------

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', 
upload_to='profile_pics')
ethAddress = models.CharField(max_length=42, default='')
advertisement = models.ForeignKey(Advertisement, 
on_delete=models.CASCADE, null=True, blank=True)

def __str__(self):
    return f'{self.user.username}'

---- Этоэлемент в моем шаблоне для отображения изображения ------

<img class="rounded-circle account-img" src="{{ user.profile.image.url 
 }}">

---- Это представление, которое отображает шаблон ------

@login_required
@transaction.atomic
def profile(request):

if request.method == 'POST':
    u_form = UserUpdateForm(request.POST, instance=request.user)
    p_form = ProfileUpdateForm(request.POST, instance=request.user.profile)
    if u_form.is_valid() and p_form.is_valid():
        u_form.save()
        p_form.save()
        messages.success(request, f'Your account has been updated!')
        return redirect('profile')
else:
    u_form = UserUpdateForm(instance=request.user)
    p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
    'u_form': u_form,
    'p_form': p_form
}
return render(request, 'users/profile.html', context)

1 Ответ

0 голосов
/ 02 июля 2019

Попробуйте это:

  <img class="rounded-circle account-img" src="{{ request.user.profile.image.url }}">
...