Не загружается изображение, которое выбрал пользователь
Есть профиль человека, человек может его редактировать, в том числе выбирать изображение, которое будет у него на аватарке.
При редактировании в профиле успешно меняются все что нужно (телефон, почта и т.д.), но выбранное изображение никуда не загружается. То есть если посмотреть код элемента аватарки в профиле, то там будет написано
Failed to load resource: the server responded with a status of 404 (Not Found).
Более того, та фотография, которую загружает человек не появляется у меня в файлах самого проекта. Не могу понять, что я делаю не так.
Структура проекта:
socialka
|---socialka
| |---settings.py
| |---urls.py
|
|---accounts
| |---views.py
| |---models.py
|
|---media
|---profile_image
socialka/settings.py:
MEDIA_URL = '/media/profile_image/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
socialka/urls.py:
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
accounts/models.py:
class UserProfile(models.Model):
user = OneToOneField(User, on_delete=models.CASCADE)
description = models.CharField(max_length=100, default='')
city = models.CharField(max_length=100, default='')
website = models.URLField(default='')
phone = models.IntegerField(default=0)
image = models.ImageField(upload_to="../media/profile_image", blank=True, null=True)
accounts/views.py:
@login_required
def edit_profile(request):
if request.method == 'POST':
...
request.user.userprofile.image = request.POST['image']
request.user.userprofile.save()
return redirect('/accounts/profile')
else:
args = {'user': request.user}
return render(request, 'accounts/edit_profile.html', args)
account/edit_profile.html:
...
<form method="post">
{% csrf_token %}
...
<label for="image">Фото профиля:</label><br>
<input type="file" name="image" id="image" class="rounded"><br><br>
<button class="btn btn-info" type="submit">Изменить</button>
</form>
...
Буду рад любой критике
Ответы (1 шт):
Автор решения: unknown
→ Ссылка
views
request.FILES['image']
template
<form method="post" enctype="multipart/form-data">