2010-08-19 80 views
0

我正在创建一个基于django的网站,它将为偶尔通过pyamf访问数据的Flash应用提供服务。我需要能够在django框架的上下文中轻松测试flash,即使用所有可用的登录cookie和所有可用的cookie,以便在进行pyamf调用时,它具有所有用户上下文。我需要能够以合理的方式测试发布swf和包装器的html。但是:Flex 4 + Django:测试和发布选项

  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

终于明白了我自己。 thisdjango get-parameters的组合。一般的外卖:

  1. 你可以把{% tags %}{{ variables }}index.template.html不用担心,因为没有办法自定义当前存在的宏有类似${title}
  2. 如果你在做一个foo.template.htmlfoo-debug.template.htmlhtml-template您的项目的目录,那么前者将覆盖index.template.html的发布版本,后者用于调试版本(注意结果将是foo-debug.html而不是foo.html)
  3. 您可以将名称的SWF中的一个参数django,并让它填充我n目录为你

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,软硬度:

  1. 添加&debug=true到url
  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到bin_debug_url上下文变量的URL
  7. 并加载了直接模板djangoflash.html
  8. 其中,在djangoflash.html,包括使用flash_template上下文变量
  9. ,进而在bin_debug_url上下文变量罢了,正确地指向事物的foo.swf参考你刚编译
  10. 闪存的 foo-debug.html包装

Whe。 :-P