Веб-программирование Python

Я - любительский разработчик с небольшим опытом работы на PHP.

Недавно я изучил Python, я должен признать, что это потрясающе, как язык программирования и его большие библиотеки, но использование этого для веб-разработки кажется большой болью в заднице. Что касается того, что я читал, я должен использовать CGI, mod_wsgi и т.д. Для развертывания (http://docs.python.org/howto/webservers.html), перезапустите сервер, чтобы увидеть изменения (http://stackoverflow.com/info/581038/python-web-programming)

Мой вопрос в том, что Python используется так широко для веб-разработки, почему это не так просто, как PHP?

т.е. я хотел бы написать index.py:

print """
<html>
<head>
<title>Hello world</title>
</head>
<body>
Hello world
</body>
</html>"""

Ответ 1

[If] Python используется так широко для веб-разработки, почему это не так просто, как PHP? т.е. я хотел бы написать index.py...

Python может быть таким же простым, как PHP, в соответствии с вашим примером. Самый простой способ сделать вышеприведенную работу - использовать CGI (и вызывать свой файл index.cgi, а не index.py, то ваш script будет работать нормально. Хотя вы должны сначала указать тип контента, например:

print 'Content-type: text/html'

Это применимо в PHP так же, как и Python. Модуль Python CGI поможет вам быстро и быстро.

Насколько я читаю, я должен использовать CGI, mod_wsgi и т.д. для развертывания

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

Перезагрузите сервер, чтобы увидеть изменения

Наверное, нет. Необходимость перезапуска сервера является ограничением конфигурации структуры и развертывания и обычно не требуется. Если вы используете mod_python, это может применяться, но, как правило, нет (например, многие фреймворки поддерживают автоматическую перезагрузку).

У Python огромное количество ресурсов для веб-разработки. Существуют системы с голыми костями (например, CGI, mod_wsgi), легкие системы (например, CherryPy) и целые каркасы (например, Zope). Вы можете выбрать тот, который наилучшим образом соответствует вашим потребностям.

Возможность создания простого файла и создания некоторого результата может помочь получить что-то быстро, но это не является признаком богатой, зрелой, функциональной структуры. Конечно, вы можете сразу показать что-то, но что тогда? Внезапно вам понадобится либо импортировать, либо написать все те же функции, что и веб-фреймворки. Для нетривиального веб-приложения вам нужна нетривиальная структура.

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

Ответ 2

Сначала на ваш вопрос о том, почему Python не так просто для веб-разработки, как PHP: он не был разработан для этого. PHP много работал над тем, чтобы сделать его хорошим языком для написания HTML-страниц, в том числе mod_php для apache. Python, хотя он очень способный веб-язык, он также способен гораздо больше, чем PHP. Например, большинство программного обеспечения Dropbox, как настольный клиент, так и код на стороне сервера - это Python. Я использую Python в своей дневной работе и использовал его для интеграции старого кода C в новый код Python через Cython.

Перемещение. Существует множество инфраструктур Python, которые могут сделать ваш веб-дизайн намного менее сложным. 2 примечания, которые широко используются профессионально, а любителями являются Django и Pyramid (ранее Pylons). Как новый пользователь, я рекомендую вам начать с Django, это отличный способ начать работу и может использоваться для больших и сложных сайтов (и более) по мере роста вашего опыта.

Вы найдете, что Django и Pyramid включают "серверы разработки". Это веб-серверы, написанные на Python, которые упакованы в рамки, чтобы обеспечить более быструю разработку. Используя эти серверы разработки, вы можете быстро встать и работать.

Существуют также чистые веб-серверы Python, которые невероятно быстрые, надежные и готовые к производству. Чтобы развернуть приложение Pyramid на Gunicorn, очень хороший сервер Python, требуется только несколько дополнительных строк в вашей конфигурации Pyramid. Как правило, вы должны отменить прокси-сервер для этих чистых серверов Python через Apache или Nginx.

Если вы хотите перейти на маршрут сервера Apache, вам просто нужен mod_wsgi. Обслуживание сайта Python с mod_python или как CGI - это несколько устаревший способ сделать это. WSGI определяет стандарт для Python для обработки веб-запросов, поэтому mod_wsgi позволяет apache передавать запросы вашему приложению Python в ожидаемом формате.

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

Ответ 3

Как говорили другие, google "python web framework". Их немало, все совсем другое. Чтобы начать работу быстрее (часы), я бы посмотрел bottle.py.

Ответ 4

Python используется так широко для веб-разработки, почему это не так просто, как PHP?

Потому что Hello World не масштабируется. Поскольку Python не является PHP. Из wikipedia [1] [2]

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

Python отлично, python DRY дружелюбный. К сожалению, когда дело доходит до веб-разработки, DRY недостаточно. Если вы действительно хотите добиться успеха (эффективно): не изобретать велосипед. Это было довольно хорошо обобщено здесь:

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

Итак, используйте правильный инструмент для правильного задания, если вы перейдете на путь python:

  • использовать python и
  • используйте веб-фреймворк, Django отлично (или еще один)
  • повторное использование пакетов, просмотрите их на django-packages
  • возможно, использовать мета-структуру, например Pinax, чтобы начать работу
  • использовать Twitter Bootstrap в качестве интерфейса пользовательского интерфейса
  • используйте PaaS, например Heroku для развертывания (или другого)

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

Кроме того, PHP больше не популярен, поскольку он был [1] [2] ср. PHP фрактальный плохой дизайн, PHP hammer и т.д.

Ответ 5

PHP предназначен исключительно для разработки веб-приложений, а точнее для создания персональной домашней страницы (там, где были P, H и P). Python, с другой стороны, является языком программирования общего назначения. Он предназначался для множества вещей (и должен был включать всевозможные батареи для всех видов задач). Поэтому, пожалуйста, не ожидайте, что Python будет вести себя так же, как это делает PHP.

Автономные сценарии python потребуют немалых усилий для запуска. Я бы предложил взять веб-фреймворк. Вы можете сначала изучить django (https://www.djangoproject.com/). Вы также можете попробовать попробовать Google App Engine. Кроме того, heroku, dotcloud, nuagehq и другие облачные хосты делают развертывание python (и django) очень простым и легким.

Надеюсь, вам понравится разрабатывать веб-приложения с помощью Python!:)