Sto lavorando con i segnali Django, ma sembrano essere ricevuti due volte, anche se emessi una volta. Ecco il codice con cui sto lavorando (si tratta di un involucro semplice da usare Uploadify con Django) ...Segnale Django che emette una volta, ricevuto due volte - Perché?
# Signal-emitting code... emits whenever a file upload is received
# ----------------------------------------------------------------
upload_recieved = django.dispatch.Signal(providing_args=['data'])
def upload(request, *args, **kwargs):
if request.method == 'POST':
if request.FILES:
print 'sending signal'
upload_recieved.send(sender='uploadify', data=request.FILES['Filedata'])
return HttpResponse('True')
# Signal-receiving code...
# ----------------------------------------------------------------
def upload_received_handler(sender, data, **kwargs):
print 'upload received handler'
print 'connecting signal'
upload_recieved.connect(upload_received_handler)
(ho appena notato il mio segnale è scritto sbagliato)
Sono sicuro che notato le dichiarazioni di stampa in là. Sulla console, questo è ciò che sta mostrando:
(server starts)
connecting signal
...
sending signal
upload received handler
upload received handler # << == where is this 2nd one coming from?
127.0.0.1 - - [25/Sep/2009 07:28:22] "POST /uploadify/upload/ HTTP/1.1" 200 -
(anche strano è il motivo per non Django segnalare pagina POST dopo i segnali vengono licenziati?)
Per quanto riguarda il motivo per cui la linea di registro POST viene dopo, credo che la il server attende fino al termine della richiesta per registrarlo, solo dopo può sapere se c'è stato un errore del server che ha generato un codice di stato 500 rispetto a una richiesta corretta, la durata della richiesta se il formato del registro lo contiene, ecc. – dcrosta