Я планирую перенести PHP-приложение на Python. Приложение в основном предназначено для сбора и обработки данных. Основное приложение работает как отдельное приложение командной строки. У приложения есть веб-интерфейс, который, по сути, представляет собой очень легкий интерфейс отчетов.
Я не использовал фреймворк в версии PHP, но, будучи новичком в Python, мне интересно, было бы выгодно использовать что-то вроде Django или, по крайней мере, Genshi. Предостережение: я не хочу, чтобы мой дистрибутив приложения был перегружен частями фреймворка, которые мне нужно было бы распространять вместе с приложением.
Является ли использование только импорта cgi в Python лучшим способом в этой ситуации? Я склонен думать, что фреймворк - это слишком много накладных расходов, но, возможно, я думаю о них не очень "питонски". Какие у вас есть предложения по этому сценарию?
Женщины предпочитают сильно связанные каркасы? : D






Зависит от размера проекта. Если бы у вас было всего несколько предыдущих php-скриптов, которые вызывали ваше автономное приложение, я бы, вероятно, выбрал cgi-app.
Если вы пользуетесь базами данных, переписыванием URL-адресов, шаблонами, управлением пользователями и т. д., То использование фреймворка - хорошая идея.
И, конечно же, прежде чем переносить его, подумайте, стоит ли просто переключить язык или есть определенные функции Python, которые вам нужны.
Удачи!
Спасибо за совет. Большинство перечисленных вами проблем с фреймворками на самом деле не относятся к той области, которой я занимаюсь, поэтому в этом и заключается мое затруднительное положение.
Это зависит от того, как вы собираетесь распространять свое приложение. Если он будет использоваться только для внутреннего использования, перейдите на django. С ним приятно работать. Однако django действительно не справляется с задачей распространения; django-приложения сложно настроить.
Хотите быть более подробным? Сам установив два, я не понимаю, что же такого сложного?
mod_python правила. У меня отлично работает.
Я согласен, я использовал mod_python с trac, и его было легко настроить.
Командная строка Python, IMO, определенно стоит на первом месте. Заставьте это работать, поскольку это суть того, что вы делаете.
Проблема в том, что использование ORM веб-фреймворка из приложения командной строки неочевидно. Django предоставляет конкретные инструкции по использованию ORM из приложения командной строки. Сначала это раздражает, но я думаю, что в конечном итоге они спасут жизнь. Я часто использую его для гигантских загрузок файлов, предоставленных клиентами.
Не используйте чистый CGI. Это не невозможно, но слишком много вещей может пойти не так, и все они были решены фреймворками. Зачем что-то изобретать? Просто используйте чужой код.
Фреймворки предполагают обучение, но без реальных «накладных расходов». Они не медленные. Это код, который вам не нужно писать или отлаживать.
Изучите Python.
Сделайте учебник Джанго.
Начните создавать веб-приложение.
а. Запустите проект Django. Создайте небольшое приложение в этом проекте.
б. Создайте новую модель с помощью Django ORM. Создайте модульный тест Django для модели. Убедитесь, что это работает. Вы сможете использовать административные страницы по умолчанию и много экспериментировать. Только не создавайте пока веб-сайт весь.
Заставьте ваше приложение командной строки работать с Django ORM. По сути, вам нужно усовершенствовать файл настроек, чтобы это приложение работало нормально. См. Раздел настройки / конфигурация.
После того, как у вас есть командная строка и запущен администратор по умолчанию, вы можете закончить веб-приложение.
Вот золотое правило фреймворков: Это код, который вам не нужно писать, отлаживать или поддерживать. Используйте их.
Выпуская свое приложение, я выпускаю его с зависимостью от Django, но не распространяю Django, верно? Я также беспокоюсь о том, чтобы сделать вещи слишком тяжелыми из-за ненужного кода в приложении командной строки. Я посмотрю на Django повнимательнее, спасибо.
Django - это фреймворк для веб-приложений. Вы устанавливаете его на веб-сервере, чтобы использовать его. Если вы хотите передать его в общественное достояние, вы жертвуете свое приложение - больше ничего.
Недавно я перенес приложение PHP на Python, используя web.py. Что касается фреймворков, он чрезвычайно легкий, с минимальными зависимостями и, как правило, не мешает вам, так что это может быть компромисс, который вы ищете.
Однако все зависит от вашего первоначального приложения, потому что для большого приложения преимущества наличия полнофункциональной инфраструктуры, управляющей канализацией, как правило, перевешивают недостатки, связанные с необходимостью перетаскивать весь код платформы.
Django позволяет быстро создать веб-сайт, это точно. Вам не нужно быть мастером Python, чтобы использовать его, и, поскольку он очень питоничен по своему дизайну и на самом деле не происходит никакого «волшебства», он поможет вам изучить Python в процессе.
Начните с примеров, посмотрите несколько скринкастов по django от TwiD, и вы будете в пути.
Начните медленно, настройте админку и поиграйте с ним через оболочку - это способ начать. Как только вы разберетесь с ORM и поймете, как все работает, начинайте создавать настоящие вещи!
Фреймворк не вызовет никаких проблем с производительностью, как сказал С. Лотт, это код, который вам не нужно поддерживать, и это лучший вариант.
Да, меня больше всего беспокоит то, что Django - это слишком много фреймворка для моих нужд. 90% приложения находится вне веб-слоя. Я обеспокоен тем, что Джанго излишни. Спасибо за информацию о том, как начать с этим, я определенно хочу узнать об этом, даже если не для этого проекта.
Вы можете подумать об использовании чего-то вроде web.py, которое было бы легко распространять (поскольку оно мало), а также было бы легко адаптировать к нему другие ваши инструменты, поскольку это не требует от вас подчинения фреймворку так же, как это делает Django.
Однако имейте в виду, что это не самый любимый фреймворк в сообществе Python, но он может быть как раз для вас. Вы также можете проверить web2py, но я знаю об этом меньше.
Некоторое время назад я наткнулся на этот пост, и он вдохновил меня тоже взглянуть на web.py. С тех пор я написал сообщение в блоге на эту тему, которое также может быть полезно для всех, кто думает взглянуть на web.py или начать его использовать: drcoen.com/2010/11/…
Выбирайте фреймворк. Базовые вещи, такие как обработка сеансов, становятся кошмаром, если вы их не используете, потому что Python не специализируется на веб-технологиях, как PHP.
Если вы думаете, что django - это слишком много, вы можете попробовать более легкий, например очень маленький, но все же удобный web.py.
Ради любви к Питу используйте фреймворк! Существуют буквально десятки фреймворков, от cherrypy до django, от albatross до ... ну ... вы называете это. Фактически, огромное количество веб-фреймворков - это то, на что люди указывают, когда жалуются на популярность Rails.
Сообщество веб-разработчиков Python разделено без единого голоса. Но это совсем другая тема! Дело в том, что существуют «веб-инструменты» (например, альбатрос), которые довольно легкие, но достаточно мощные, чтобы помочь вам в течение дня (например, автоматическая проверка бота не выполняла подделку простой отправки формы или помогает поддерживать чистоту MVC ).
Если вам нужно что-то, что не является "слишком большим количеством рамок", посмотрите здесь:
http://wiki.python.org/moin/WebFrameworks
Загляните в раздел «Базовые рамки, обеспечивающие создание шаблонов». Все они легкие и делают все, что «не изобретайте велосипед», не навязывая вам грузовик Mac.
В результате я стал большим поклонником Торнадо. Он достаточно слабый для мужчин, и я нахожу его очень прочным.