Веб-разработка Python - с картой или без нее
Я планирую перенести приложение PHP на Python. Приложение в основном связано с сбором и обработкой данных. Основное приложение работает как автономное приложение командной строки. В приложении есть веб-интерфейс, который в основном представляет собой очень легкий интерфейс отчетности.
Я не использовал фреймворк в PHP-версии, но будучи новым для Python, мне интересно, было бы выгодно использовать что-то вроде Django или, по крайней мере, Genshi. Предостережение: я не хочу, чтобы распределение приложений было перегружено частями структуры, которые мне нужно было бы распространять с помощью приложения.
Использует ли только cgi import в Python лучший способ пойти в этом случае? Я бы склонен думать, что структура слишком много накладных расходов, но, возможно, я не думаю о них очень "python". Какие предложения у вас есть в этом сценарии?
Ответы
Ответ 1
Командная строка Python, IMO, определенно на первом месте. Получите это, чтобы работать, поскольку это ядро того, что вы делаете.
Проблема в том, что использование ORM веб-структуры из приложения командной строки не является очевидным. Django предоставляет конкретные инструкции по использованию своего ORM из приложения командной строки. Сначала это раздражает, но я думаю, что они спасают жизнь в долгосрочной перспективе. Я использую его для гигантских загрузок файлов, поставляемых клиентом.
Не используйте голый CGI. Это не невозможно, но слишком много вещей может пойти не так, и все они решены рамками. Зачем изобретать что-то? Просто используйте код другого пользователя.
Рамки включают обучение, но не настоящие "накладные расходы". Они не медленны. Это код, который вам не нужно писать или отлаживать.
-
Изучите Python.
-
Сделайте Django учебник.
-
Начните создавать веб-приложение.
а. Запустите проект Django. Создайте небольшое приложение в этом проекте.
б. Создайте свою новую модель с помощью Django ORM. Создайте Django unit test для модели. Убедитесь, что он работает. Вы сможете использовать страницы администрирования по умолчанию и много играть. Просто не создавайте весь веб-сайт.
-
Получите приложение командной строки для работы с помощью Django ORM. По сути, вам нужно усовершенствовать файл настроек для этого приложения, чтобы работать хорошо. См. Раздел настройки/настройки.
-
После того, как вы запустили свою командную строку и администратор по умолчанию, вы можете закончить
веб-приложение.
Здесь золотое правило фреймворков: Это код, который вам не нужно писать, отлаживать или поддерживать. Используйте их.
Ответ 2
Возможно, вы захотите использовать что-то вроде web.py, которое было бы легко распространять (поскольку оно мало), и было бы легко адаптироваться ваши другие инструменты, поскольку это не требует, чтобы вы подчинялись фреймворку так, как это делали Django.
Будьте предупреждены, однако, это не самая любимая инфраструктура в сообществе Python, но это может быть только для вас. Вы также можете проверить web2py, но я об этом меньше знаю.
Ответ 3
Зависит от размера проекта. Если бы у вас было только несколько предыдущих php-скриптов, которые называли ваше автономное приложение, я бы, вероятно, пошел на cgi-приложение.
Если вы используете базы данных, переписываете URL, шаблоны, управление пользователями и т.д., то использование фреймворка - хорошая идея.
И, конечно же, перед тем, как вы его портируете, подумайте, стоит ли просто переключать язык или нужны ли какие-либо специфические функции Python.
Удачи!
Ответ 4
Недавно я портировал приложение PHP на Python, используя web.py. В рамках каркаса это чрезвычайно легкий вес с минимальными зависимостями, и он имеет тенденцию держаться подальше от вашего пути, так что это может быть компромисс, который вы ищете.
Все зависит от вашего первоначального приложения, хотя, поскольку с большим приложением преимущества наличия полнофункциональной структуры, обрабатывающей сантехнику, как правило, перевешивают недостатки, связанные с необходимостью перетаскивать весь код рамки.
Ответ 5
Django позволяет быстро выскочить на сайт, что точно. Вам не обязательно быть мастером Python, чтобы использовать его, и поскольку он очень pythonic в этом дизайне, и на самом деле не существует какой-либо "магии", это поможет вам изучить Python по пути.
Начните с примеров, посмотрите некоторые скринканы django из TwiD, и вы будете в пути.
Начать медленно, настраивать администратора и играть с ним через оболочку - это способ начать. Когда у вас есть ручка на ORM и получите, как все работает, начните создавать реальные вещи!
Структура не вызовет каких-либо проблем с производительностью, например, S. Lott, это код, который вам не нужно поддерживать, и что лучший вид.
Ответ 6
Перейдите к фреймворку. Основные вещи, такие как обработка сессии, - это кошмар, если вы не используете один, потому что Python не является веб-специалистом, как PHP.
Если вы считаете, что django слишком много, вы можете попробовать более легкий, как очень маленький, но все же удобный web.py.
Ответ 7
Для любви к птенцу используйте рамки! Там есть буквально десятки фреймворков, от вишневого до джанго до альбатроса до... ну.. ты назовешь его. На самом деле огромное количество веб-фреймворков - это то, о чем указывают люди, когда они скулят о популярности Rails.
Сообщество веб-разработчиков Python делится без единого голоса. Но эта другая тема всецело! Дело в том, что есть "веб-инструментарий" (например, альбатрос), которые достаточно легкие, но достаточно мощные, чтобы вы могли пройти через день (например, автоматическая проверка бота не делала простой фальшивки формы или помогала поддерживать чистоту MVC).
Если вы хотите что-то, что не "слишком много фреймворков", посмотрите здесь:
http://wiki.python.org/moin/WebFrameworks
Посмотрите в разделе "Основные рамки, обеспечивающие шаблоны". Они все легки и делают все "не изобретать велосипед", не заставляя вас грузовик Mac.
Ответ 8
Это зависит от того, как вы собираетесь распространять свое приложение.
Если он будет использоваться только внутри, пойдите для django. Рад работать с ним.
Однако джанго действительно не справляется с задачей распределения; django-приложения - это боль, которую нужно настроить.