【问题标题】:Django redirect to an swfDjango 重定向到 swf
【发布时间】:2009-12-20 15:14:59
【问题描述】:

我正在尝试重定向到一个 swf 文件,因为我需要将它嵌入到一个需要其绝对路径的 fb:swf 中。当我以某种方式处理 url 中的 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

【问题讨论】:

  • http:\\testapp.varheroes.com\flash\ ?你的意思是正向/斜线?
  • 您在回复中返回的 MIME 类型是什么?看起来它可能默认为 test/html。只是一个想法。

标签: django django-urls


【解决方案1】:

render_to_response 用于渲染模板并将其作为响应发送。我不认为你的 swf 文件是模板,所以你应该直接返回它:

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

但实际上你根本不应该通过 Django 发送该文件,它应该由为其余静态文件(CSS、JS 等)提供服务的任何东西提供服务。

【讨论】:

  • 问题是 Django 处理我所有的 url 我只需要将 swf 的地址传递给 fb:swf ( won't open('as3.swf')) 打开一个新窗口?
  • 打开新窗口与HttpResponse无关,是浏览器动作。丹尼尔是对的——你不应该像那样提供二进制文件,使用 apache nginx 或任何你用来做静态服务的 Web 服务器。
  • 如果我的 Django 正在为某个前缀的所有 url 提供服务。我真的可以通过静态服务逃跑并绕过 django 网址吗?
【解决方案2】:

我会将您的 swf 文件保存在静态目录中,并添加一个 url 模式以重定向到您的文件,例如:

from django.views.generic.simple import redirect_to

urlpatterns = patterns('',

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

例如,这会将 /flash/ 重定向到 STATIC_URL + as3.swf(例如:/static/as3.swf) as3.swf 应该在你的静态目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2012-10-30
    • 2013-09-11
    相关资源
    最近更新 更多