Рекомендуемая библиотека Python / фреймворк для локального веб-приложения? - PullRequest
13 голосов
/ 28 декабря 2010

Я хочу создать простое ЛОКАЛЬНОЕ веб-приложение на Python.

Веб-сервер и «внутренний» код будут работать в той же системе (изначально система Windows), что и пользовательский интерфейс.Я сомневаюсь, что это имеет значение, но пользовательский интерфейс будет типичной веб-комбинацией Google Chrome, HTML, CSS, JavaScript и jQuery.

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

Предложения?

Ответы [ 10 ]

7 голосов
/ 25 января 2011

Я думаю, web2py может быть отличным решением. Он не требует установки и не имеет зависимостей (он даже поставляется с собственным интерпретатором Python, а также веб-сервером и базой данных SQLite). Вы даже можете распространять свое приложение как двоичный файл Windows или Mac (включая web2py), и пользователи могут легко запускать его локально без установки.

6 голосов
/ 28 декабря 2010

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

Это звучит как идеальное соответствие вашим требованиям :)

2 голосов
/ 02 мая 2012

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

  1. Простой или микро-фреймворк - действительно хороший выбор.
  2. Я пробовал фреймворки CherryPy и Flask. Flask - явный победитель простоты, с базовыми функциями «настроить несколько страниц обслуживания AJAX», которые можно написать в Flask совершенно тривиально. Документация CherryPy часто непрозрачна, а сложность ее установки значительно выше.
  3. Я доволен Flask, но продолжаю осматриваться. Я особенно хотел бы попробовать Bottle, который я видел очень высоко оцененным, в том числе в других обсуждениях StackOverflow и в этом параллельном сравнении: http://www.slideshare.net/r1chardj0n3s/web-microframework-battle web2py также стоит попробовать.
2 голосов
/ 28 декабря 2010

Я использовал BaseHTTPServer для этой цели. Это веб-сервер, встроенный в стандартную библиотеку Python и позволяющий вам полностью контролировать содержимое, которое вы доставляете.

Поскольку это часть стандартной библиотеки Python, вам не нужно беспокоиться о какой-либо платформо-зависимой конфигурации. Я использовал тот же сценарий локального сервера в системе 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()
1 голос
/ 28 декабря 2010

У меня нет прямого опыта, но я слышал кое-что хорошее о web2py:

Django против web2py для начинающего разработчика

1 голос
/ 28 декабря 2010

Очень простой сервер в стандартной библиотеке: 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()
0 голосов
/ 28 декабря 2010

Любая структура сделает это.Django, безусловно, подойдет, но так как вы хотите что-то меньшее, я бы порекомендовал BFG / Pyramid, который очень легкий, чрезвычайно расширяемый, гибкий и удобный в использовании.Но есть множество других, и, как уже упоминалось, встроенный wsgiref так же легок, как и вы.: -)

0 голосов
/ 28 декабря 2010

Скорее всего, вы хотите интерфейс администратора для основных операций CRUD на некоторых таблицах базы данных. Тогда Django - ваш лучший выбор.

0 голосов
/ 28 декабря 2010

Django поставляется со встроенным веб-сервером, который позволяет вам полностью протестировать ваше приложение локально (через localhost:8080 или что-то в этом роде). На самом деле, я использовал его несколько раз для локального запуска полного веб-приложения перед его развертыванием на сервере. Я не вижу причин, по которым вы не можете использовать его для своих собственных локальных веб-приложений. Хотя может показаться, что Django большой и сложный, это решение является автономным и простым в использовании:

  1. Установить Django
  2. Пройдите великолепный учебник, который очень скоро покажет вам, как запустить веб-сервер
  3. Напишите ваш код

Вот и все. Развернуть его на других машинах также просто, особенно с чем-то вроде virtualenv.

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

0 голосов
/ 28 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...