2009-12-20 87 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应位于您的静态目录中。