Flex 4 + Django: параметры тестирования и выпуска - PullRequest
0 голосов
/ 20 августа 2010

Я создаю сайт на основе django, который будет обслуживать флэш-приложения, которые время от времени получают доступ к данным через pyamf .Мне нужно иметь возможность легко протестировать флэш-память в контексте инфраструктуры django, то есть со всеми файлами cookie для входа и всем доступным, чтобы при выполнении вызова pyamf в нем присутствовал весь пользовательский контекст.И мне нужно иметь возможность проверить, и выпустить и SWF-файлы, и HTML-обертки в здравом смысле.Однако:

  1. HTML-шаблоны в flex уже являются шаблонами, поэтому, если я добавлю туда код шаблона для django, он будет удален до создания flashapp.html.
  2. HTML и SWF автоматически попадают в один и тот же каталог, но я хочу, чтобы они переходили в разные каталоги, потому что SWF не должны обслуживаться django, а HTML должны находиться в области, контролирующей django.

Это заставляет меня поверить, на первый взгляд, в то, что мне нужно:

  1. Способ размещения html и swf-файлов в разных местах.(Я не знаю, как это сделать.)
  2. Способ выпуска html как заглушки (без тега html / body), чтобы я мог включить их из другого места в django.(Я полагаю, просто удалите то, что я не хочу, из index.template.html?)
  3. Затем я могу указать flex, чтобы перейти на сайт django, который, в свою очередь, включает в себя сгенерированный flashapp.html, который в свою очередь ссылается наSWF, и все должно работать.(Полагаю, что этот альтернативный html-файл задается в настройках запуска / отладки.)

Поэтому мой вопрос сводится к следующему:

  1. Вышеуказанный лучший способ сделатьэто, или это даже правильное направление?
  2. Если так, как я могу выпустить html и swf в разные каталоги?(Для режима отладки и выпуска, если есть два разных метода.)
  3. Если нет, то что правильно?

И если есть какие-то другие общие советы для меня поэту тему, пожалуйста, не стесняйтесь поделиться.: -)

1 Ответ

1 голос
/ 20 августа 2010

Наконец-то понял это сам. Комбинация this и get-параметров django работает. Общий вынос:

  1. Вы можете без проблем поместить {% tags %} и {{ variables }} в index.template.html, так как там нет способа настроить существующие макросы, такие как ${title}
  2. Если вы сделаете foo.template.html и foo-debug.template.html в каталоге html-template вашего проекта, то первый переопределит index.template.html для сборок релиза, а второй для отладочных сборок (обратите внимание, что результатом будет foo -debug.html вместо foo.html, хотя.)
  3. Вы можете передать имя SWF в параметре в django и попросить его заполнить каталог для вас

Foo-debug.template.html

<object ...
  <param name="movie" value="{{ bin_debug_url }}/${swf}.swf" ...

djangoflash.html

{% block content %}
  {% include flash_template %}
{% endblock %}

views.py

def djangoflashview( request, **kwargs ):
  if not kwargs.has_key('extra_context'):
    kwargs['extra_context'] = {}
  if request.GET.has_key('name'):
    debug = "-debug" if request.GET.has_key('debug') else ""
    bin_debug_dir = '/dir-to-bin-debug/'
    bin_debug_url = 'url-to-bin-debug'
    name = bin_debug_dir + request.GET['name'] + debug + '.html'
    kwargs['extra_context']['flash_template'] = name
    kwargs['extra_context']['bin_debug_url' ] = bin_debug_url
  return direct_to_template( request, **kwargs ) 

urls.py

url( r'^djangoflash/', 'views.djangoflashview', 
     { 'template': 'djangoflash.html' }

Цель выполнения отладки foo.mxml:

/url-to-django/djangoflash/?name=foo

Когда вы отлаживаете foo.mxml, flex:

  1. Добавляет &debug=true к URL
  2. Поднимает браузер до /url-to-djangoflash/djangoflash/?name=foo&debug=true
  3. Который выбирает djangoflash/ в urls.py
  4. , который передает запрос на djangoflashview и {'name':'foo','debug':'true'} на request.GET в views.py
  5. Который определяет имя и местоположение местоположения foo-debug.html, передавая его в контекстную переменную flash_template
  6. И URL-адрес swf к контекстной переменной bin_debug_url
  7. и загружает прямой шаблон djangoflash.html
  8. Включая в djangoflash.html оболочку foo-debug.html для флэш-памяти с использованием контекстной переменной flash_template
  9. Который, в свою очередь, заполняет контекстную переменную bin_debug_url, чтобы правильно указать ссылку foo.swf на то, что вы только что скомпилировали

Уф. : -Р

...