0

我正在创建一个基于 django 的站点,该站点将为偶尔通过pyamf访问数据的 Flash 应用程序提供服务。我需要能够在 django 框架的上下文中轻松测试 flash,即使用所有登录 cookie 和所有可用的东西,以便当我进行 pyamf 调用时,它具有所有用户上下文。而且我需要能够以一种理智的方式测试发布 swf 和包装器 html。然而:

  1. flex 中的 html 模板已经是模板,所以如果我将 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,而 flashapp.html 又引用了 swf,它应该都可以工作。(我假设通过将该备用 html 提供给运行/调试设置。)

所以我的问题归结为:

  1. 以上是做到这一点的最好方法,还是这甚至是正确的方向?
  2. 如果是这样,我如何将 html 和 swf 发布到不同的目录?(对于调试和发布模式,如果有两种不同的方法。)
  3. 如果不是,什么是正确的?

如果在这个主题上对我有任何其他一般性的建议,请随时分享。:-)

4

1 回答 1

1

终于自己弄清楚了。django get-parameters的组合有效。一般外卖:

  1. 您可以放心地放入{% tags %}{{ variables }}放入index.template.html,因为无法自定义那里当前存在的宏,例如${title}
  2. 如果您在项目目录中创建foo.template.htmland ,则前者将覆盖发布版本,后者用于调试版本(请注意,结果将是 foo-debug.html 而不是 foo.html。)foo-debug.template.htmlhtml-templateindex.template.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 %}

视图.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 ) 

网址.py

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

foo.mxml 的运行调试目标:

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

当你调试 foo.mxml 时,flex:

  1. 添加&debug=true到网址
  2. 调出浏览器/url-to-djangoflash/djangoflash/?name=foo&debug=true
  3. 哪个djangoflash/选择urls.py
  4. 它将请求传递给和djangoflashview传递{'name':'foo','debug':'true'}request.GETviews.py
  5. 它计算出位置的名称和位置foo-debug.html,将其传递给flash_template上下文变量
  6. 以及 swf 的 url 到bin_debug_url上下文变量
  7. 并加载直接模板djangoflash.html
  8. 其中,在 中djangoflash.html,包括使用上下文变量foo-debug.html的 flash 包装器flash_template
  9. 依次填充bin_debug_url上下文变量以将 foo.swf 引用正确指向您刚刚编译的内容

唷。:-P

于 2010-08-20T19:29:50.817 回答