Найти в Дзене
Движение-Жизнь

Django. Загрузка файлов

Задача была такая "Добавьте в профиль пользователя поле avatar типа ImageField, укажите путь для загрузки через кастомную функцию". Это примерно тоже самое что и сделать превью продукта, только для пользователя. Да, все делается в приложении myauth. Сложного, казалось бы, нет ничего - в модели Profile дописать строчку, которая будет отвечать в БД за за хранение ссылки на аватарку. Рядышком прописать кастомную фукнцию (из задания) которая пользователю выбрать путь к файлу откуда нужно загрузить аватарку. Создать вьюшку для редактирования аватарки. Код "вьюшки" будет в конце статьи, в ней появятся три новых класса. Затем создать новый файл формы, которая будет загружаться в шаблоне "редактора аватарки". Подключить новую вьюшку в файле url.py Провести изменения в файле about-me.html, где будет данная аватарка выводиться, если есть картинка она выводится а если нет, то пишем соответствующую запись. Вроде бы ничего не забыл, можно проверять. Запускаем тестовый сервер Django. Переходим на ab

Задача была такая "Добавьте в профиль пользователя поле avatar типа ImageField, укажите путь для загрузки через кастомную функцию". Это примерно тоже самое что и сделать превью продукта, только для пользователя.

Да, все делается в приложении myauth.

Сложного, казалось бы, нет ничего - в модели Profile дописать строчку, которая будет отвечать в БД за за хранение ссылки на аватарку. Рядышком прописать кастомную фукнцию (из задания) которая пользователю выбрать путь к файлу откуда нужно загрузить аватарку.

-2

Создать вьюшку для редактирования аватарки. Код "вьюшки" будет в конце статьи, в ней появятся три новых класса.

Затем создать новый файл формы, которая будет загружаться в шаблоне "редактора аватарки".

-3

Подключить новую вьюшку в файле url.py

-4

Провести изменения в файле about-me.html, где будет данная аватарка выводиться, если есть картинка она выводится а если нет, то пишем соответствующую запись.

Вроде бы ничего не забыл, можно проверять. Запускаем тестовый сервер Django. Переходим на about-me.html

Проверяем на наличие в профиле аватарки, если она есть - выводим, ссылочка на редактирование аватарки, ссылочка на список зарегистрированных пользователей
Проверяем на наличие в профиле аватарки, если она есть - выводим, ссылочка на редактирование аватарки, ссылочка на список зарегистрированных пользователей

В браузере это выглядит как-то так

-6

Тыкаем в ссылку "обновить аватарку" и переходим на следующую страничку avatar_update.html, код которой выглядит так:

-7

В браузере это будет выглядеть так:

-8

При успешном добавлении или удалении аватарки происходит переход на список зарегистрированных пользователей (это следующее задание в данной практической работе)

-9

Код которой выглядит так:

-10

По заданию нужно было сделать так чтобы редактировать аватарку мог либо хозяин профиля либо пользователь с правами is_staff. Это ограничение я решил через UserPassesTestMixin

-11

У меня было создано три пользователя admin (суперпользователь), vasya - пользователь с базовыми правами, zoya - пользователь с правами is_staff, который может редактировать аватарки других пользователей.

Если кликнуть по ссылке пользователя "Василий Тёркин" мы переместимся к шаблону user_details.html, и если это сделал сам пользователь "Василий Тёркин" то над аватаркой появится ссылка на редактирование аватарки:

-12

Но если это будут пользователи с администраторскими правами то над аватаркой ссылки уже не будет, а будет она внизу, она предназначена для пользователей с is_staff

-13

Ну и собственно файл user_details.html который выводит всю эту красоту:

-14

Вот собственно пожалуй и всё. Всем всяческих благ! Если есть вопросы - гоу в комменты! Помогу чем могу.