2016-03-25 7 views
1

Ben gösteren bir görünüme sahip: durum mesajı, metin alanını, Gönder düğmesineDjango: Biçim görünümü üzerinde Güncellemelerimizi durum mesajı göndermek ve bir dosya indirir

başarılı olabilir göndermek veya İçin

başarısız seçilmesi başarılı istekler, bir dosyayı indirmek ve görünümde durum mesajını ("başarı") güncellemek istiyorum. Başarısızlık durumunda, yalnızca görünümün durum mesajını güncellemek istiyorum ("başarısız").

def download_file(request): 
    context = RequestContext(request) 
    context['message'] = '' 

    filename = request.POST.get('filename') 
    data = get_file(filename) 

    if data: 
     response = HttpResponse(data, content_type="application/octet-stream") 
     response['Content-Disposition'] = 'attachment; filename="download.bin"' 
     return response # NOT the desired behavior, this will only download the file, not update the view 
    else: 
     context['message'] = "failed" 
     return render_to_response('download_page.html', context_instance=context) 

sizin formda

<label>status: {{ message }}</label> 
<form action="/download/" method="post"> 
    <label>filename: </label> 
    <input id="filename" type="text" name="filename"> 
    <input type="submit" value="Submit"> 
</form> 

cevap

0

Use django embed forms
download_page.html, sadece dosya bulunamazsa bir hata yükseltecektir bir "clean_filename" fonksiyonunu tanımlamak gerekecek.

"İletinizi" şablonunuzda görüntüleyebilirsiniz. Bunu değil salık

{{ message }} 
<form action="/download/" method="post"> 
    <label>filename: </label> 
    <input id="filename" type="text" name="filename"> 
    <input type="submit" value="Submit"> 
</form> 

:

ile deneyin. İlk çözüm, daha pythonic ve yeniden kullanılabilir.