Джанго: изображения не загружаются - PullRequest
0 голосов
/ 03 марта 2019

Мне нужно показывать изображения в шаблонах.Изображения получены из моделей.Мои models.py находятся в приложении с именем services:

class Car_model(models.Model):
    name = models.CharField (max_length = 25, blank=False)
    ...
    category = models.ForeignKey (Category, on_delete=models.CASCADE)
    photo = models.ImageField (upload_to ='static/images/models')

Я добавил эти строки в свой settings.py:

STATIC_ROOT = os.path.join(BASE_DIR, 'media')    # i added it later
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

Я также добавил эту строку в свой имя_проекта urls.py файл:

from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Я пытаюсь получить изображения в моих шаблонах с помощью этого кода:

{% load static %}
  {% for c in ca %}
    <p><strong>{{ c.car_no }}</strong>--<em>{{ c.car_model }}</em>--{{ c.garage }}</p>
    <img src="{{ c.car_model.photo.url }}" height="200" />
    <form action="{%url 'booking' c.id c.garage.id %}" method="POST">
      {% csrf_token %}
      <input type="submit" name="the_selected_car" value="Select this car">
    </form>
{% endfor %}

Но все, что я пробую, фотографии нене показыватьЯ попытался поместить это: + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) в urls.py моего приложения services, но это не помогло.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Вы забыли добавить MEDIA_ROOT и MEDIA_URL в settings.py и загрузить URL-адреса носителей в urls.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

и в urls.py

urlpatterns = [
 ........  

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Вы можете изменить свой upload_to в поле для фотографий

1. Если вы хотите загрузить изображения вstatic Director

photo = models.ImageField (upload_to ='static/images/models')

И установите статическую папку в MEDIA_ROOT, как показано ниже

MEDIA_ROOT = os.path.join(BASE_DIR, 'static')

2. Если вы хотите загрузить изображения в media Director

Поскольку вы сохраняете загруженные изображения, я бы предложил сохранить их в другом каталоге, например, мультимедиа, загрузки. Измените поле, как показано ниже.

photo = models.ImageField (upload_to ='media/images/car_model')

Теперь все ваши изображения, относящиеся к Car_Model, будут сохранены в медиа /images / car_model И установите папку мультимедиа в MEDIA_ROOT, как показано ниже MEDIA_ROOT, как показано ниже

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
0 голосов
/ 03 марта 2019

вы не включили MEDIA URL в ваш urls.py

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
...