Служить медиафайлам через Apache на сервере разработки Django? - PullRequest
0 голосов
/ 02 августа 2011

По какой-то причине я не могу понять, кроме «глупых» ошибок, которые продолжают появляться, когда я пытаюсь получить доступ к media файлам (файлам, загруженным пользователем) в моем приложении Django, почему я просто могу »t server media files!

В этом конкретном случае все, что я хочу, например, - это возможность подавать изображения на фронт, которые были загружены.Мой корректно обслуживает статические файлы через /static/, но когда я пытаюсь обслуживать мои /site_media/ файлы, ад выходит из строя!Что я могу делать не так?

Итак, после того, как я понял, что Django не был специально создан для обработки медиафайлов, я решил прибегнуть к использованию Apache через рекомендованную опцию mod_python, как это рекомендуется делатьв производстве.Но я никогда не делал этого раньше, и мне интересно, стоит ли это проблем на сервере разработки.

Что ж, я знаю, что в конце концов мне придется пойти по этому пути, когда я начну работать, и так будет до сих пор.Нужно узнать, как это сделать, но каковы плюсы и минусы этого маршрута на сервере разработки?

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

Во-первых, mod_python не рекомендуется. На самом деле, это особенно рекомендуется против . Вместо этого используйте mod_wsgi.

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

Наконец, нет никаких причин, по которым вы не можете использовать Apache или, что еще лучше, облегченный сервер, такой как nginx, и указывать его только на свой статический каталог. Затем установите STATIC_URL в файле settings.py на адрес, обслуживаемый этим сервером. Не имеет значения, на каком порту он находится, пока вы в разработке.

0 голосов
/ 02 августа 2011

Это, безусловно, профессионал, поскольку django обслуживает запросы быстрее, без необходимости иметь дело с носителем.

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

обновление на основе вашего комментария:

Конечно, вы можете легко это сделать.Один из простых способов, которыми я это практикую, заключается в использовании nginx и символической ссылки папки мультимедиа на сайты с поддержкой nginx и запуске nginx на порту 80 (или любом другом).

Вы можете установить MEDIA_URL в своих настройках, гдеВы указываете на URL с соответствующим портом.

...