Веб-разработка на Python - с фреймворком или без него

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

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

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

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

Gavin M. Roy 03.12.2009 04:03

Женщины предпочитают сильно связанные каркасы? : D

Zayne S Halsall 02.07.2013 17:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
19
2
6 950
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Зависит от размера проекта. Если бы у вас было всего несколько предыдущих php-скриптов, которые вызывали ваше автономное приложение, я бы, вероятно, выбрал cgi-app.

Если вы пользуетесь базами данных, переписыванием URL-адресов, шаблонами, управлением пользователями и т. д., То использование фреймворка - хорошая идея.

И, конечно же, прежде чем переносить его, подумайте, стоит ли просто переключить язык или есть определенные функции Python, которые вам нужны.

Удачи!

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

Gavin M. Roy 26.09.2008 06:58

Это зависит от того, как вы собираетесь распространять свое приложение. Если он будет использоваться только для внутреннего использования, перейдите на django. С ним приятно работать. Однако django действительно не справляется с задачей распространения; django-приложения сложно настроить.

Хотите быть более подробным? Сам установив два, я не понимаю, что же такого сложного?

Hannes Ovrén 26.09.2008 01:16

mod_python правила. У меня отлично работает.

S.Lott 26.09.2008 01:48

Я согласен, я использовал mod_python с trac, и его было легко настроить.

Gavin M. Roy 26.09.2008 07:02
Ответ принят как подходящий

Командная строка Python, IMO, определенно стоит на первом месте. Заставьте это работать, поскольку это суть того, что вы делаете.

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

Не используйте чистый CGI. Это не невозможно, но слишком много вещей может пойти не так, и все они были решены фреймворками. Зачем что-то изобретать? Просто используйте чужой код.

Фреймворки предполагают обучение, но без реальных «накладных расходов». Они не медленные. Это код, который вам не нужно писать или отлаживать.

  1. Изучите Python.

  2. Сделайте учебник Джанго.

  3. Начните создавать веб-приложение.

    а. Запустите проект Django. Создайте небольшое приложение в этом проекте.

    б. Создайте новую модель с помощью Django ORM. Создайте модульный тест Django для модели. Убедитесь, что это работает. Вы сможете использовать административные страницы по умолчанию и много экспериментировать. Только не создавайте пока веб-сайт весь.

  4. Заставьте ваше приложение командной строки работать с Django ORM. По сути, вам нужно усовершенствовать файл настроек, чтобы это приложение работало нормально. См. Раздел настройки / конфигурация.

  5. После того, как у вас есть командная строка и запущен администратор по умолчанию, вы можете закончить веб-приложение.

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

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

Gavin M. Roy 26.09.2008 01:37

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

S.Lott 26.09.2008 01:48

Недавно я перенес приложение PHP на Python, используя web.py. Что касается фреймворков, он чрезвычайно легкий, с минимальными зависимостями и, как правило, не мешает вам, так что это может быть компромисс, который вы ищете.

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

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

Начните с примеров, посмотрите несколько скринкастов по django от TwiD, и вы будете в пути.

Начните медленно, настройте админку и поиграйте с ним через оболочку - это способ начать. Как только вы разберетесь с ORM и поймете, как все работает, начинайте создавать настоящие вещи!

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

Да, меня больше всего беспокоит то, что Django - это слишком много фреймворка для моих нужд. 90% приложения находится вне веб-слоя. Я обеспокоен тем, что Джанго излишни. Спасибо за информацию о том, как начать с этим, я определенно хочу узнать об этом, даже если не для этого проекта.

Gavin M. Roy 26.09.2008 07:01

Вы можете подумать об использовании чего-то вроде web.py, которое было бы легко распространять (поскольку оно мало), а также было бы легко адаптировать к нему другие ваши инструменты, поскольку это не требует от вас подчинения фреймворку так же, как это делает Django.

Однако имейте в виду, что это не самый любимый фреймворк в сообществе Python, но он может быть как раз для вас. Вы также можете проверить web2py, но я знаю об этом меньше.

Некоторое время назад я наткнулся на этот пост, и он вдохновил меня тоже взглянуть на web.py. С тех пор я написал сообщение в блоге на эту тему, которое также может быть полезно для всех, кто думает взглянуть на web.py или начать его использовать: drcoen.com/2010/11/…

eclipse31 23.01.2011 18:50

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

Если вы думаете, что django - это слишком много, вы можете попробовать более легкий, например очень маленький, но все же удобный web.py.

Ради любви к Питу используйте фреймворк! Существуют буквально десятки фреймворков, от cherrypy до django, от albatross до ... ну ... вы называете это. Фактически, огромное количество веб-фреймворков - это то, на что люди указывают, когда жалуются на популярность Rails.

Сообщество веб-разработчиков Python разделено без единого голоса. Но это совсем другая тема! Дело в том, что существуют «веб-инструменты» (например, альбатрос), которые довольно легкие, но достаточно мощные, чтобы помочь вам в течение дня (например, автоматическая проверка бота не выполняла подделку простой отправки формы или помогает поддерживать чистоту MVC ).

Если вам нужно что-то, что не является "слишком большим количеством рамок", посмотрите здесь:

http://wiki.python.org/moin/WebFrameworks

Загляните в раздел «Базовые рамки, обеспечивающие создание шаблонов». Все они легкие и делают все, что «не изобретайте велосипед», не навязывая вам грузовик Mac.

Другие вопросы по теме