Джанго: Переход от XAMPP к вопросам Джанго - PullRequest
3 голосов
/ 30 января 2010

Я работал с XAMPP, WAMPP, MAMPP и т. Д. И начинаю смотреть на Django.

Большая часть нашей работы ориентирована на CMS; хотя нам сказали не использовать сторонние CMS '(главным образом из-за сложности их использования пользователем и других проблем), я обнаружил, что могу кодировать очень простую CMS, используя Cake, CodeIgniter или один из другие PHP-фреймворки.

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

У меня есть некоторые вопросы и вопросы по поводу перехода с XAMPP на Django.

1) Безопасность

Любое веб-приложение должно быть защищено. За последние несколько лет мы наблюдаем движение в направлении защиты от XSS, SQL-инъекций, подделки межсайтовых сайтов, фиксации сеансов, хай-джеккинга сессий, хай-джеккинга cookie; уровень безопасности, который вам нужен, может быть огромным.

Что делает Django для предотвращения / ограничения XSS, SQL-инъекций, Javascript-инъекций и очистки ввода; обычно ассоциируется с безопасностью PHP веб-приложений? Это то, о чем мне нужно беспокоиться, или Джанго делает все это из коробки?

2) Что находится в папке / www / public?

В руководстве, которое я прочитал, говорилось, что в основной webroot не следует добавлять manage.py или другие файлы .py, так что это означает, что я помещаю все вне webroot; так что там происходит?

Поместить ли я каталог / templates / в webroot? Как сервер знает, что запустить?

3) Могу ли я использовать .htaccess в проектах Django? Я знаком с Apache и часто использую его для маршрутизации или блокировки плохих ботов, но будет ли работать .htaccess по-прежнему?

4) Cronjobs

Работают ли cronjobs с проектами Python / Django?

5) Запуск сторонних Perl / других скриптов

В PHP вы можете использовать другие библиотеки, такие как библиотека curl, ffmpeg, ImageMagik и многие другие; могу ли я по-прежнему использовать эти библиотеки с Python / Django?

6) Экран администратора

Django предоставляет вам стандартный экран администратора; это только для целей развития или может быть запущено? Я обеспокоен любой безопасностью экрана администратора.

7) Интеграция с Discuss, Facebook, Twitter, OpenID, капчей и т. Д.

В PHP есть библиотеки, которые помогают интегрировать DisQuss, Facebook, Twitter; но относительно легко сделать интеграцию с этими и другими сторонними приложениями?

8) Электронная коммерция, SSL

Много ли сайтов электронной коммерции используют Django? Я видел много программ типа CMS / Blog, но не так много сайтов электронной коммерции. Я имею в виду интеграцию карт покупок, Protx / Paypal или Worldpay.

Это другое дело; есть песочницы для Protx, Paypal, Worldpay и т. д. для PHP - но есть ли для Django?

9) Это того стоит?

Стоит ли переходить в Django с фона XAMPP? Это действительно сделает вещи быстрее, или это просто рекламный шумиха?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 30 января 2010
  1. Security. Основная команда Django очень заботится о безопасности и старается сделать невозможным внедрение SQL-инъекций. Следующая версия 1.2 включает в себя совершенно новую библиотеку подделок межсайтовых запросов . Очевидно, что вы все еще должны знать об этом при разработке приложения, но Django делает много, чтобы помочь вам.

  2. Что входит в / www / public: ничего. Django не работает через обычный механизм обслуживания Apache: он подключается (предпочтительно) к mod_wsgi, который нуждается в одном файле, который затем указывает ему выполнить остальную часть кода. Шаблоны могут идти куда угодно, и на них указывает ваш файл настроек Django, но опять же Apache не обслуживается напрямую.

  3. .htaccess: Вам это действительно не нужно, из-за пункта 2: вы не обслуживаете вещи в иерархии файловой системы. Лучший способ сделать это - настроить vhosts и управлять всем таким образом.

  4. Задания Cron: Абсолютно. Django - это просто Python, и вы можете легко запускать скрипты Python через cron. Django позволяет вам создавать собственные командные сценарии, которые инициализируют ORM и дают вам доступ ко всему, что вам нужно.

  5. Библиотеки: Опять же, поскольку Django - это Python, вы получаете доступ к огромному количеству библиотек Python, которые там есть. Для curl в Python есть urllib; для ImageMagick - PIL; и, несомненно, есть и эквиваленты ffmpeg.

  6. Admin: Опять же, безопасность была задумана с самого начала. Различаются мнения относительно того, следует ли использовать администратор только для опытных пользователей или настроить его и разрешить доступ для всех пользователей; Я имел большой успех, используя его в качестве основы для своих пользовательских интерфейсов CMS.

  7. Facebook и т. Д. Да, есть библиотеки для всего этого.

  8. Электронная коммерция: Существует целый проект электронной коммерции, Satchmo, написанный на Django. Существуют библиотеки для взаимодействия со всеми поставщиками платежей.

  9. Оно того стоит? Только ты можешь сказать. Мой опыт работы с рядом разработчиков, которые перешли с PHP, заключается в том, что им понравился этот опыт, и он стал гораздо более продуктивным.

3 голосов
/ 30 января 2010

В SQL-инъекциях: Django использует ORM, который заботится о защите от SQL-инъекций, и вы редко будете писать свой собственный SQL. Если вы это сделаете, просто следуйте инструкциям о том, как передать параметры в необработанные запросы и предотвратить SQL-инъекции.

В книге django о безопасности есть целая глава, которая должна ответить на все ваши вопросы.

Что входит в / www /: что-нибудь, что не является кодом? Проблема в том, чтобы не помещать туда код Python.

При .htaccess: Да, он все еще должен работать (для любых ресурсов, не относящихся к Django, как указывает Даниэль).

На cronjobs: что вы имеете в виду?

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

В интерфейсе администратора: На самом деле это вещь, которая, вероятно, поможет вам больше всего, судя по вашему вопросу. Они настраиваемы (в некоторых пределах) и действительно дают персоналу (он предназначен не для публичных пользователей, а для сотрудников) основы CRUD для ваших моделей баз данных. Это экономит время. Возможно, вам придется написать свои собственные шаблоны для расширенной функциональности, но для большинства простых CRUD, ориентированных на персонал (что обычно является целью CMS), это очень полезно и легко настраивается.

При интеграции: Проверьте Pinax на группу приложений, предоставляющих дополнительные функции. Существует богатый и разнообразный спектр интеграционных решений. Здесь, в SO, нет ничего необычного в том, что касается django + facebook и других.

В электронной торговле: Проверьте Satchmo out.

Стоит ли оно того: Теперь у меня нет опыта работы с XAMPP. Я знаю, что мне нравится Python лучше, чем Perl и PHP (и Java, если на то пошло). Я знаю, что в качестве фреймворка Django проще в использовании, быстрее разворачивается, чем все, что я использовал раньше.

Мое предложение старое: создайте простой проект и решите сами. Вы единственный, кто может решить, является ли Django основой для вас.

В старом вопросе о SO обсуждаются некоторые ограничения Django. Мой ответ на этот вопрос может оказаться полезным и для вас.

2 голосов
/ 30 января 2010

Я недавно перешел к разработке любых новых проектов в Django, происходящих из PHP-фона. Вот мои мысли по вашим вопросам.

1) Безопасность

Строки, отправленные в шаблоны, по умолчанию экранированы, что по большей части отвечает за это. Поскольку вы используете ORM, внедрение SQL не должно вызывать проблем, если по какой-то причине вы не создадите необработанные запросы.

2) Что находится в папке / www / public?

Django не использует файловую иерархию для URL-адресов, как обычная настройка PHP. Сервер знает, что нужно запустить из вашего urls.py и указателя settings.py на папку шаблонов.

3) Могу ли я использовать .htaccess в проектах Django? Я знаком с Apache и часто использую его для маршрутизации или блокировки плохих ботов, но будет ли работать .htaccess по-прежнему?

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

4) Cronjobs

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

5) Запуск сторонних Perl / других скриптов

Конечно, вы захотите использовать версии этих библиотек на Python. Например FFMpeg PythonMagick

Я заменил большую часть своей потребности в Curl встроенными библиотеками urllib и urrlib2, но есть также PyCurl , если вам это нужно.

6) Экран администратора

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

7) Интеграция с Discuss, Facebook, Twitter, OpenID, капчей и т. Д.

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

8) Электронная коммерция, SSL

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

9) Это того стоит? Стоит ли переходить на Django с фона XAMPP? Это действительно сделает вещи быстрее, или это просто рекламный шумиха?

Я перешел на Django, потому что Python действительно более привлекательный язык, чем PHP. Это сделает вещи быстрее? Я не уверен, какие преимущества в этом отношении были бы для Django по сравнению с PHP MVC. Здесь нет волшебных пуль.

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

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