Как я могу служить изображения URL Usign Django - PullRequest
0 голосов
/ 22 октября 2018

в моем приложении django я могу показывать изображения, используя путь, подобный этому src="/media/user/image.png", используя {{apps.upload.url}}, но теперь я хочу показывать изображения на html-странице, используя ссылки URL, как это http://127.0.0.1:8000/media/image.png

settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS=(
    os.path.join(BASE_DIR, 'static','static_dirs'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static','static_root')
MEDIA_ROOT = os.path.join(BASE_DIR, 'static','media')
MEDIA_URL = ('/media/')

models.py

class MyModel(models.Model):
    name = models.TextField()
    upload = models.ImageField(upload_to=user_directory_path)

urls.py

urlpatterns = [
 ..............
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

на html-странице:

<img  src="/media/user_1/image.png" >

1 Ответ

0 голосов
/ 23 октября 2018

Похоже, вы используете функцию user_directory_path из примера в Django Docs.Это сохраняет каждое изображение в папку на основе user.id.Вам нужно будет обновить MyModel и удалить атрибут upload_to:

class MyModel(models.Model):
    name = models.TextField()
    upload = models.ImageField()

Это должно работать для всех новых загружаемых вами изображений.

Пример того, что вы хотите, также включает в себя полный URL-адрес, а не относительный URL-адрес.Если это то, что вам нужно, установите MEDIA_URL в настройках на http://127.0.0.1:8000/media/.

Если у вас есть изображения в системе, и вы хотите получить к ним доступ без user_xв пути вам, вероятно, потребуется:

  • переместить изображения из их папок user_x в родительскую папку
  • обновить значение MyModel.upload для каждого изображения.Если у вас много изображений, может потребоваться миграция данных .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...