@ilya_shevelev

Как сделать загрузку картинки в django?

Я делаю что-то по типу социальной сети на django. Мне нужно сделать загрузку аватарки со страницы редактирования профиля пользователя. Я установил MEDIA_URL и MEDIA_ROOT в settings.py, в urls.py при дебаг равном истине добавил медиа-файлы. В кастомной модели пользователя есть поле avatar c blank=True (чтобы аватарка была не обязательной), вьюха наследуется от UpdateView + миксин на проверку, что текущий пользователь является владельцем аккаунта. Причем из админки изображения загружаются нормально, а с самой страницы редактирования профиля они не загружаются.

models.py
avatar = models.ImageField(upload_to="user_avatars/", blank=True)


views.py

class CustomUserUpdateView(AuthorPermissionsMixin, UpdateView):
        model = CustomUser
        fields = [
            "username",
            "first_name",
            "last_name",
            "email",
            "birthday",
            "phoneNumber",
            "country",
            "slug",
            "avatar",
        ]
        template_name = "accounts/customuser_edit.html"

ссылка на страницу редактирования

{% if customuser == request.user %}
            <p><a href="{% url 'customuser_edit' customuser.id %}">Редактировать</a></p>
    {% endif %}

страница редактирования (customuser_edit.html)

{% extends 'accounts/base.html' %}
    
    {% block content %}
        <p>Редактировать</p>
        <form method="post">
            {% csrf_token %}
            {{ form.as_p }}
            <button type="submit">Сохранить</button>
        </form>
    {% endblock content %}

В консоли на post-запрос на редактирование выводится 302 код

"POST /accounts/1/edit/ HTTP/1.1" 302 0
Пакеты:

asgiref==3.5.2
    certifi==2022.9.24
    cffi==1.15.1
    charset-normalizer==2.1.1
    cryptography==38.0.3
    defusedxml==0.7.1
    Django==4.1.3
    django-allauth==0.51.0
    django-friendship==1.9.6
    fontawesomefree==6.2.0
    idna==3.4
    oauthlib==3.2.2
    Pillow==9.3.0
    pycparser==2.21
    PyJWT==2.6.0
    python3-openid==3.2.0
    requests==2.28.1
    requests-oauthlib==1.3.1
    sqlparse==0.4.3
    tzdata==2022.6
    urllib3==1.26.12
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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