Django. model.ImageField
Недавно начал работу с Django и натолкнулся на проблему. Из формы (администратора) запрашивается изображение. С загрузкой всё корректно, но файл сохраняется в корень, а мне нужно, чтобы он сохранялся в static, т.к. потом я вызываю этот файл через {% load static %}. Почему-то в HTML-коде файл высвечивается только из статика, а из корня нет. Приходилось вручную вырезать и вставлять файл в нужную папку. Помогите, пожалуйста, прописать пусть сохранения из класс models.ImageField в /static. Заранее, спасибо
Ответы (1 шт):
Django вроде как не загружает изображения с помощью {% load static %}. Вам нужно в файле settings.py указать MEDIA_URL и MEDIA_ROOT. Пример использования:
settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [....
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models.py
class TestModel(models.Model):
image = models.ImageField(upload_to='users/', blank=True, null=True)
По итогу путь к картинке будет иметь вид /media/users/your_image.jpg.
Далее передаёте при рендеринге передаёте это объект в ваш темплейт. Ссылка на картинку доступна через object.image.url.