Django (на Centos) загружал файл SVG на

У меня есть приложение Django, и оно обслуживает статический файл SVG (я прямо указываю браузеру что-то вроде: http://myserver.com/static/my.svg). Я использую встроенный веб-сервер, который поставляется с Django. Я запустил это приложение с сервера Ubuntu, и оно работало нормально. Когда я говорю «сработало нормально», я имею в виду, что файл svg отображается прямо в окне браузера (как для Firefox, так и для Chrome). Однако, когда я запускаю одно и то же приложение Django на сервере Centos, Firefox и Chrome предлагают пользователю сохранить/загрузить файл svg.

На том же самом сервере Centos я попытался обслуживать тот же файл svg, используя Apache в качестве веб-сервера, и вуаля, файл снова отображается прямо в браузере (без каких-либо подсказок)!

Я могу объяснить разницу в поведении только встроенным веб-сервером на Django. Он каким-то образом отправляет что-то в браузер, из-за чего браузер думает, что файл нужно загрузить, а не отображать напрямую.

Есть ли что-то особенное, что мне нужно сделать, чтобы это работало с Django на Centos (возможно, некоторые настройки)? Мой релиз Centos, версии Django и Python показаны ниже:

Выпуск Centos:

LSB Version:    :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 5.7 (Final)
Release:        5.7
Codename:       Final

Джанго и Python:

(myenv)[root@foo bar]# python
Python 2.7.1 (r271:86832, Mar 17 2014, 11:59:55)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 6, 2, 'final', 0)

Спасибо


person Amit Saha    schedule 18.03.2014    source источник
comment
Не используйте встроенный веб-сервер.   -  person Ignacio Vazquez-Abrams    schedule 18.03.2014
comment
@ Игнасио Васкес-Абрамс: лучше ... Не используйте его для производства. Но это вообще не отвечает на вопрос.   -  person Thomas Schwärzl    schedule 18.03.2014
comment
Нет, даже не используйте его для тестирования. Это дерьмо.   -  person Ignacio Vazquez-Abrams    schedule 18.03.2014
comment
Хм, тогда у вас есть рекомендация/альтернатива?   -  person Thomas Schwärzl    schedule 18.03.2014
comment
HTTPd+mod_wsgi отлично работает даже для обычного пользователя, если используется непривилегированный порт.   -  person Ignacio Vazquez-Abrams    schedule 18.03.2014
comment
Спасибо - попробую. Я хотел бы воспользоваться этой возможностью, чтобы спросить вас, какой редактор вы используете и какую ОС :)   -  person Thomas Schwärzl    schedule 18.03.2014
comment
Возможный дубликат Может ли сервер разработки Django правильно обслуживать SVG?   -  person bubbassauro    schedule 24.02.2018


Ответы (1)


Хотя отказ от встроенного веб-сервера Django решит эту проблему, я нашел наиболее подходящий ответ в другом сообщении: Может ли сервер разработки Django правильно обслуживать SVG?. Правильный ответ на эту проблему заключается в том, что в Centos в файле /etc/mime.types нет записи для файлов svg. Вот соответствующая запись из Ubuntu:

> cat /etc/mime.types  | grep svg
image/svg+xml                                   svg svgz

Таким образом, решение этой проблемы может быть одним из следующих:

  1. Добавьте запись в файлы /etc/mime.types
  2. Добавьте следующий код в файл «settings.py» в Django:

    import mimetypes
    mimetypes.add_type("image/svg+xml", ".svg", True)
    mimetypes.add_type("image/svg+xml", ".svgz", True)
    

Спасибо за все ваши комментарии.

person Amit Saha    schedule 19.03.2014