Django admin посмотреть загруженное фото - PullRequest
4 голосов
/ 12 июля 2011

Я реализовал загрузку фотографий в Django, но у меня возникла проблема с его просмотром. Администратор Django.

models.py

class WorkPlacePhoto(models.Model):

    file = models.FileField(storage=FileSystemStorage(location=settings.MEDIA_ROOT), upload_to='uploads')

Фотографии сохраняются в PATH_TO_APP/media/uploads/, и я могу просматривать их в своем приложении. Тем не менее, в админ-панели, когда я нажимаю на ссылку, какое приложение администратора генерируется, я получаю ошибку 404 как

Request Method: GET
Request URL:    http://127.0.0.1/admin/wpphotos/workplacephoto/9/media/uploads/aosa_glb_ho_778_hi.jpg/

u'9/media/uploads/aosa_glb_ho_778_hi.jpg' object is not found

Хотя сообщение ясное, я не мог понять, какой URL должен быть написан для просмотра изображения и, конечно, как должен быть изменен класс администратора.

Я рад предложить мне способ достичь этого. Спасибо ...

Ответы [ 4 ]

3 голосов
/ 13 июля 2011

Исходя из вашего описания, я предполагаю, что ваш MEDIA_URL установлен неправильно, что немного сложно сделать с помощью веб-сервера разработки Django.

Я предполагаю, что ссылкаhref, вероятно, будет media/uploads/aosa_glb_ho_778_hi.jpg там, где вы, вероятно, хотите /media/uploads/aosa_glb_ho_778_hi.jpg, поэтому оно относительно http://127.0.0.1/, а не того, где вы сейчас находитесь http://127.0.0.1/admin/wpphotos/workplacephoto/9/.

См. документацию статических файлов за то, как обслуживать ваши изображения с помощью сервера разработки Django.

0 голосов
/ 16 марта 2017

К настоящему времени вы, вероятно, либо решили свою проблему, либо прекратили ее вообще, но после всех этих лет люди (как и я) все еще имеют эту проблему. Вот как я это решил:

  1. В файле settings.py я установил не только STATIC_URL (с именем статической папки) и STATIC_URL (с путем к этой папке), но также установил MEDIA_URL и MEDIA_ROOT соответственно, где загруженные изображения будут храниться в;

  2. В моем классе моделей поле моего изображения выглядит следующим образом:

    picture = models.FileField(upload_to='images/')
    

Он загрузит изображение в мою папку MEDIA_ROOT, добавив к нему /images/.

  1. И, наконец, на моем urls.py мои urlpatterns выглядят так:

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

Обратите внимание, как я добавил статические сразу после списка.

Документация Django ясно показывает, что эта стратегия не рекомендуется для производственной среды, и дает некоторые альтернативы, которые вы можете выбрать. Для получения дополнительной информации: https://docs.djangoproject.com/en/1.10/howto/static-files/#serving-files-uploaded-by-a-user-during-development

0 голосов
/ 03 января 2012

Вы, вероятно, имеете в своем settings.py

MEDIA_URL = 'media/'

Будучи относительным URL, вы наблюдаете такое поведение в панели администратора.Решением было бы установить абсолютный URL-адрес

MEDIA_URL = '/media/'
0 голосов
/ 03 октября 2011

У меня та же проблема, но мне удалось ее исправить, но это не правильный метод, и я хотел бы использовать лучшее решение, если это возможно.
Я установил apache на 80-м порту, поэтому я создал символическую ссылку в папке /var/www, которая указывает на папку Images в каталоге приложения Django. И URL-адрес СМИ в основном такой:

MEDIA_URL = 'http://127.0.0.1/Images/'

Это отлично работает, но мне не нравится решение.
Я не совсем следовал решению, описанному выше. Может кто-нибудь объяснить, пожалуйста, подробнее?

...