baterson
@baterson
python/django

Как отобразить загруженные изображения в django?

Привет ребята, не могу разобраться с работой файлов. Хочу реализовать загрузку изображения от юзера и отображение картинок на другой странице

настройки settings:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

добавил в settings.TEMPLATES.context_processors
'django.core.context_processors.media'

Создал модель:
class UserProfile(models.Model):

	profile_img = models.ImageField(upload_to='images/', blank=True, null=True)
	profile_text = models.TextField()
	profile_title = models.CharField(max_length=300)
	profile_user = models.ForeignKey(User)

Форму:
class ProfileForm(ModelForm):
	class Meta:
		model = UserProfile
		fields = ['profile_img', 'profile_title']

Вью:
#Загрузка изображений
def cabinet(request):
	form = ProfileForm(request.POST, request.FILES or None)
	if request.method == 'POST' and form.is_valid():
		obj = UserProfile(profile_img=request.FILES['profile_img'])
		obj = form.save(commit=False)
		obj.profile_user = request.user
		obj.save()
		return redirect(reverse(cabinet))
	return render(request, 'cabinet.html', {'form': form})
#Вывод изображений
def user_page(request):
	profile = UserProfile.objects.all()
	return render(request, 'user_page.html', {'profile':profile})

И шаблон:
{% for img in profile %}
<img src="{{MEDIA_URL}}{{ img.profile_img }}" />
{% endfor %}


В итоге изображения не загружаются, хотя в браузере ссылка верная
<img src="/media/images/3N7QtulTgx0.jpg">
Помогите пожалуйста с этим разобраться
  • Вопрос задан
  • 6593 просмотра
Решения вопроса 1
baterson
@baterson Автор вопроса
python/django
Удалось решить, проблема была в url
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

нужно было это добавить в основной файл, а не в url приложения
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
<img src="{{ profile_img.url }}">

что за фигня в данном вью происходит?
def user_page(request):
  profile = UserProfile.objects.all()
  return render(request, 'user_page.html', {'profile':profile})


зачем в профайле показивать юзеримейджи всех пользователей?
{% for img in profile %}
<img src="{{MEDIA_URL}}{{ img.profile_img }}" />
{% endfor %}
Ответ написан
zelsky
@zelsky
Вставляйте без {{MEDIA_URL}}
{% for img in profile %}
<img src="{{ img.profile_img }}" />
{% endfor %}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы