Exemplos de código para Django + SWFUpload?
Pergunta
Alguém tem alguma exemplos de código simples para Django + SWFUpload ? Eu tenho que trabalhar perfeitamente na minha aplicação PHP, mas Django está me dando dor de cabeça.
Solução
Infelizmente não posso dar-lhe quaisquer amostras de código muito detalhado, mas eu tenho um pouco de experiência com o trabalho com SWFUpload + Django (para um compartilhamento de fotos site que eu trabalho por diante). De qualquer forma, aqui estão algumas dicas que espero ajudá-lo em sua busca pela felicidade DjSWF:)
-
Você vai querer usar os cookies do plug-in (se é claro que você está usando algum tipo de autenticação baseada em sessão [como
django.contrib.auth
, e os cuidados que carregou o).Os biscoitos plug-in envia os dados de cookies como POST, então você vai ter que encontrar alguma maneira de conseguir isso de volta para
request.COOKIES
(middlewareprocess_request
que procura umasettings.SESSION_COOKIE_NAME
emrequest.POST
em URLs específicos e despeja-lo emrequest.COOKIES
funciona bem para isto:) -
Além disso, lembre-se que você deve retorno algo no corpo da resposta para SWFUpload reconhecê-lo como uma tentativa de upload bem-sucedido. Eu acredito que este mudou na última versão beta do SWFUpload, mas de qualquer forma é aconselhável apenas para algo vara lá como 'ok'. Para falhas, fazer uso de algo como
HttpResponseBadRequest
ou similar. -
Por último, no caso de você está tendo problemas para encontrá-los, o arquivo enviado é em
request.FILES
:)
Se você tem alguma coisa desconcertante eu não ter coberto, fique à vontade para postar algo mais detalhado e eu vou ser feliz para ajudar.
Outras dicas
Versão Django das amostras para SWFUpload:
http://github.com/naltimari/django-swfupload-samples / árvore / master
Enquanto Uploadify. Grande ideia, mas é apenas de buggy, especialmente no Windows.
A seguir é a minha implementação específica do Django para corrigir esse problema (ou seja, os meus envios estavam falhando no Firefox com um 302 Redirect).
Na minha visão inicial que gera a página com o uploader sobre ele, eu olhei para os biscoitos e encontrou idsessão
ipdb> self.request.COOKIES
{'csrftoken': '43535f552b7c94563ada784f4d469acf', 'sessionid': 'rii380947wteuevuus0i5nbvpc6qq7i1'}
Quando eu olhei para o que estava sendo publicado na SWFUploadMiddleware (quando usando o Firefox), descobri que o sessionid não estava sendo definido.
No meu ponto de vista intial que gera a página que contém o manipulador de upload, eu adicionei o sessionid ao contexto.
context['sessionid'] = self.request.session.session_key
Em minhas configurações swfuploader, acrescentei sessionid para a opção de pós-params da seguinte forma:
post_params: {... "sessionid": "{{ sessionid }}" ...},
Agora, quando eu olhei no SWFUploadMiddleware, eu podia ver o ser idsessão postado, e os meus envios começou a trabalhar se o Firefox .
ipdb> request.POST
<QueryDict: {... u'session_id': [u'rii380947wteuevuus0i5nbvpc6qq7i1'],...}>
Para completar, meus SWFUploadMiddleware olhares como este ...
from django.conf import settings
from django.core.urlresolvers import reverse
class SWFUploadMiddleware(object):
def process_request(self, request):
if (request.method == 'POST') and (request.path == reverse('upload_handler')) and request.POST.has_key(settings.SESSION_COOKIE_NAME):
request.COOKIES[settings.SESSION_COOKIE_NAME] = request.POST[settings.SESSION_COOKIE_NAME]
# http://stackoverflow.com/questions/6634666/403-forbidden-error-on-swfupload-and-django
# Fix for problem uploading images (403 error) in Firefox 20 and others
if request.POST.has_key('csrftoken'):
request.COOKIES['csrftoken'] = request.POST['csrftoken']