2009-12-20 51 views
0

我想重定向到一個swf文件,因爲我需要將其嵌入到fb:swf中,它需要它的絕對路徑。當我以某種方式處理url中的swf時,它不起作用。Django重定向到swf

在url.py

(r'^flash/','lastproject.yofacebook.flashtest.flash'), 

在flahstest.flash

def flash(request): 
return render_to_response('as3.swf') 

我想打開這個網址的SWF

http://testapp.varheroes.com/flash/ 

的FB:SWF

<fb:swf 
    swfbgcolor="ffffff" 
    swfsrc='http://testapp.varheroes.com/flash/' 
    width='620' height='530' /> 

錯誤,我得到

'utf8' codec can't decode bytes in position 5-6: invalid data 
+0

http:\\ testapp.varheroes.com \ flash \?你的意思是前鋒/斜線? – miku 2009-12-20 15:19:14

+0

什麼是你的迴應與您的迴應MIME類型?看起來這可能是默認測試/ HTML。只是一個想法。 – 2009-12-21 03:26:41

回答

1

render_to_response用於呈現模板,並把它作爲響應。我不認爲你的swf文件是一個模板,所以你只要直接返回它:

return HttpResponse(open('as3.swf')) 

不過說真的,你不應該在所有發送通過Django的那個文件,它應該通過無論是服務送達剩下的靜態文件(CSS,JS等)。

+0

事情是Django處理我所有的網址我只需要將swf的地址傳遞給fb:swf(不會打開('as3.swf'))打開一個新窗口? – 2009-12-21 11:09:40

+0

打開新窗口與HttpResponse無關,它是一個瀏覽器動作。丹尼爾是對的 - 你不應該提供這樣的二進制文件,使用Apache nginx或你正在使用的任何Web服務器來執行靜態服務。 – kibitzer 2009-12-21 11:31:32

+0

如果我的Django正在提供某個前綴的所有url。我真的可以用靜態服務跑掉並繞過django url嗎? – 2009-12-22 11:32:15

1

我會保持你的swf文件的靜態目錄,並添加一個URL模式重定向到您的文件,例如:

from django.views.generic.simple import redirect_to 

urlpatterns = patterns('', 

    ... 
    (r'^flash/', redirect_to, {'url': settings.STATIC_URL + 'as3.swf'}), 
    ... 
) 

這重定向例如,/閃光燈/到STATIC_URL + as3.swf(如: /static/as3.swf) as3.swf應位於您的靜態目錄中。