Рекомендуемая библиотека/инфраструктура python для локального веб-приложения?
Я хочу создать простое веб-приложение LOCAL на Python.
Веб-сервер и "внутренний" код будут работать в одной и той же системе (первоначально в системе Windows) в качестве пользовательского интерфейса. Я сомневаюсь, что это имеет значение, но пользовательский интерфейс будет типичным веб-комбо Google Chrome, HTML, CSS, JavaScript и jQuery.
Существуют TON основанных на Python рамок для веб-программирования, но все они предназначены для создания сложных широкомасштабных приложений с большим количеством внутренней инфраструктуры. Я хочу обратное: что-то очень простое, легкое и легко автономное - достаточно веб-сервера и фреймворка для создания/поддержки локального веб-приложения.
Предложения?
Ответы
Ответ 1
Я думаю, что web2py может быть решением для geat. Он не требует установки и не имеет зависимостей (он даже поставляется с собственным интерпретатором Python, а также с веб-сервером и базой данных SQLite). Вы даже можете распространять свое приложение как двоичный файл Windows или Mac (включая web2py), и пользователи могут легко запускать его локально без установки.
Ответ 2
Bottle - очень легкая микроструктура. Он поставляется как один .py файл без внешних зависимостей, поддерживает маршрутизацию, небольшой шаблонный движок и поставляется с интегрированным веб-сервером. Он прост в использовании и тонкий.
Это звучит как идеальное соответствие вашим требованиям:)
Ответ 3
Я написал несколько таких приложений "локального веб-сервера", так как я задал этот вопрос. У меня нет окончательного ответа "какая структура лучше", но у меня есть некоторые идеи:
- Простая или микро-каркас действительно является хорошим выбором.
- Я пробовал рамки CherryPy и Flask. Флакон - это явный победитель для простоты, а базовые "настроить некоторые страницы обслуживания AJAX" абсолютно тривиальны для записи в Flask. Документация CherryPy часто непрозрачна, и ее сложность установки заметно выше.
- Я доволен Flask, но я продолжаю оглядываться. Мне особенно хотелось бы попробовать "Бутылку", которую я видел очень внимательно, в том числе в других обсуждениях StackOverflow и этом параллельном сравнении: http://www.slideshare.net/r1chardj0n3s/web-microframework-battle web2py также стоит попробовать.
Ответ 4
У меня нет прямого опыта, но я слышал некоторые хорошие вещи о web2py:
Django vs web2py для начинающего разработчика
Ответ 5
Я использовал BaseHTTPServer
для этой цели. Это веб-сервер, встроенный в стандартную библиотеку Python, и позволяет вам полностью контролировать поставляемый контент.
Поскольку это часть стандартной библиотеки Python, вам не нужно беспокоиться о какой-либо конфигурации на платформе. Я использовал один и тот же локальный сервер script в системе Windows, Linux и Mac OS X без изменений.
Примерный бит кода может быть:
import BaseHTTPServer
class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write("Hello world!")
server_address = ('', 8080)
httpd = BaseHTTPServer.HTTPServer(server_address, Handler)
httpd.serve_forever()
Ответ 6
Pylons чрезвычайно прост в использовании, как только вы получите некоторую простую конфигурацию, вам нужно будет иметь представление о том, чего вы хотите.
Ответ 7
Django поставляется со встроенным веб-сервером, который позволяет вам полностью тестировать ваше приложение локально (через localhost:8080
или что-то в этом роде). На самом деле я использовал его несколько раз для запуска полного веб-приложения локально до его развертывания на сервере. Я не вижу причин, по которым вы не можете использовать его для своих локальных веб-приложений. Хотя может показаться, что Django большой и сложный, это решение является самодостаточным и простым в управлении:
- Установить Django
- Пройдите большой учебник, который очень скоро покажет вам, как запустить веб-сервер
- Напишите свой код
Что об этом. Развертывание его на других машинах также просто сделать, особенно с чем-то вроде virtualenv
.
Если вам не нужна большая веб-инфраструктура, мне придется присоединиться к совету Грега, чтобы использовать BaseHTTPServer
. Я использовал его раньше для специализированных локальных приложений, и он хорошо работает, делает то, что от него ожидается, и не намного больше. Это очень гибкое решение, позволяющее вам создавать что-то совершенно обычное, если оно вам нужно.
Ответ 8
Очень простой сервер в стандартной библиотеке wsgiref.simple_server
.
Пример выглядит тривиальным (demo_app
также является частью модуля):
from wsgiref.simple_server import make_server, demo_app
httpd = make_server('', 8000, demo_app)
print("Serving HTTP on port 8000...")
# Respond to requests until process is killed
httpd.serve_forever()
Ответ 9
Скорее всего, вам нужен интерфейс администратора для основных операций CRUD в некоторых таблицах базы данных.
Тогда Django - ваш лучший выбор.
Ответ 10
Любая инфраструктура сделает это. Django, безусловно, будет делать, но поскольку вы хотите что-то меньшее, я бы порекомендовал бы BFG/Pyramid, который очень легкий, чрезвычайно расширяемый, гибкий и забавный в использовании. Но есть множество других, и, как уже упоминалось, встроенный wsgiref такой же легкий, как вы.: -)