Какие у меня варианты для MVC, GUI + Интерактивная визуализация в App Engine (python)? - PullRequest
2 голосов
/ 11 июня 2011

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

Каков «лучший» способ создания визуализации gui + для моего проекта?

Под лучшим я подразумеваю следующее:
1. соответствует веб-стандартам, без вкуса решения месяца
2. допускает творческую гибкость
3. интуитивно понятный, не потребует недель, чтобы учиться и месяцев, чтобы освоить

Должен ли я начать погружаться в Django и узнавать, как работает его MVC? Все, что я читал, писает на Django, но кажется наиболее часто используемым вариантом для GAE.

Извините, если это не связно. Эти технологии находятся вне моей зоны комфорта, поэтому у меня возникают проблемы с поиском решений и формулировкой моих вопросов.

Ответы [ 3 ]

4 голосов
/ 11 июня 2011

App Engine является гибким на стороне пользовательского интерфейса. Python поддерживает шаблоны Django (0,96 из коробки и 1,2 с изменением конфигурации в одну строку). Шаблоны Django просты в использовании и не требуют инструментария JavaScript. Я использую jQuery, но это личный выбор, который App Engine не навязывает. Что касается пользовательского интерфейса, это безопасный выбор, и каждый раз, когда вы начинаете изучать язык шаблонов Django, jQuery переносится за пределы App Engine. Я не вижу много писания на Джанго, но, возможно, я болтаюсь в разных местах.

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

App Engine SDK отлично подходит для локальной разработки (например, для ноутбука в кафе).

Я немного пристрастен, хотя.

1 голос
/ 11 июня 2011

Имея в виду свое третье требование: взгляните на что-то вроде Визуализация графов Protovis или этот Пример графа Infovis ( код ).Я не знаю масштаб вашей задачи, но если вам повезет, вам не нужно слишком углубляться в сорняки MVC.Во втором примере роль веб-бэкэнда состоит всего лишь в том, чтобы 1) предоставлять объекту json информацию, которую необходимо выложить, и 2) обрабатывать ответы.(Кстати, все эти ссылки имеют открытый исходный код и хорошо документированы.) Конкретнее, скажем, у вас есть график с таким интерфейсом: http://thejit.org/static/v20/Jit/Examples/Hypertree/example3.html ( отформатированный источник ).Схема того, как это может выглядеть, может быть такой простой:

Псевдо HTML:

<a_canvas_svg_or_webgl_object id="your_surface"> ... </a_canvas...>

<script src="... // one of the above visualization libraries

<script>
selector(#your_surface...
data = json.gets("/graph/minard/data.json"); //typical method name in these libs
data.do_stuff()   // bunch of methods from the visualization guys...
                  // save state/user input to json object
button.onclick... // do an ajax post to an url like "/graph/a/data.json?extent=1234"
                  // use something like query string ie, for when 'extent' changes
etc...

Затем на сервере (пример GAE-совместимого микрофрейм Flask псевдокод(но не это псевдо)):

@app.route('/')
def frontpage():
    return render_template('your_front_page.html')

@app.route('/graph/<graph_name>/<kind>')
def backend():
    if request.method == 'POST':
        gql_foo.save_user_stuff(request.json)
    if request.method == 'GET':
        if kind == 'data.json':
            relevant_part_of_graph = request.args['extent']
            requested_data = jsonify(db_query(parameters=graph_name...
            return requested_data
    else:
        return 404

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

1 голос
/ 11 июня 2011

Должен ли он быть в питоне?GAE имеет прекрасную поддержку GWT.Плагин GWT eclipse может компилироваться и развертываться непосредственно в GAE без дальнейшей модификации. лучшее решение, которое отвечает всем трем вашим требованиям, будет использовать GWT + GAE / J.

Если вы в основном ищете решение для построения графиков / графиков, есть несколько хороших решенийоснованный на Flash * gasp *, который довольно прост в использовании, например AnyChart.

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

Удачи-tjw

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