2010-08-19 83 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