2009-12-20 7 views
0

J'essaye de rediriger vers un fichier swf parce que j'ai besoin de l'incorporer dans un fb: swf qui veut son chemin absolu. Quand je gère le swf dans url est en quelque sorte ça ne fonctionne pas.Django rediriger vers un swf

Dans url.py

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

Dans flahstest.flash

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

Je veux ouvrir le swf sur cette url

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

le fb: swf

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

L'erreur que je reçois

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

http: \\ testapp.varheroes.com \ flash \? Vous voulez dire avant/barres obliques? – miku

+0

Quel est le type MIME que vous renvoyez avec votre réponse? On dirait qu'il peut être par défaut de tester/html. Juste une pensée. –

Répondre

1

render_to_response est utilisé pour rendre un modèle et l'envoyer comme réponse. Je ne pense pas que votre fichier swf est un modèle, alors vous devriez juste retourner directement:

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

Mais vraiment vous ne devriez pas l'envoi de ce fichier par Django du tout, il doit être servi par tout ce qui est de servir le reste de vos fichiers statiques (CSS, JS, etc).

+0

Le truc, c'est que Django gère toutes mes url je dois juste passer l'adresse du swf à fb: swf (ne s'ouvre pas ('as3.swf')) ouvre une nouvelle fenêtre? –

+0

l'ouverture d'une nouvelle fenêtre n'a rien à voir avec HttpResponse, c'est une action du navigateur. Daniel a raison - vous ne devriez pas servir des fichiers binaires comme ça, utilisez apache nginx ou n'importe quel serveur web que vous utilisez pour faire une distribution statique. – kibitzer

+0

Si mon Django sert toutes les URL d'un certain préfixe. Puis-je m'enfuir avec le service statique et contourner l'URL de django? –

1

Je garderais votre fichier swf dans le répertoire statique et ajouter un motif d'URL pour rediriger vers votre fichier par exemple:

from django.views.generic.simple import redirect_to 

urlpatterns = patterns('', 

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

Ce réoriente par exemple/flash/à STATIC_URL + as3.swf (par exemple: /static/as3.swf) as3.swf doit être dans votre répertoire statique.