Иногда возникают ситуации когда в ответ на запрос в браузере необходимо вернуть файл. Наверное возможно написать, какое нибудь изящное решение используя CBV (функции основанные на классах), но я решил использовать для этих целей FBV(функции-представления).
Возвращать наша функция будет фай с разрешением .dbf, используя метод HttpResponse. Думаю более подробные комментарии излишни, код простой очень. И я выложу его, может кому нибудь и пригодится.
@login_required def download_dbf(request, num_dbf): #Подключаемся на фтп серваер ftp = FTP('muftp.ru') ftp.login('user', 'password') ftp.cwd("nakl") ftp.cwd(request.user.username) #Загружаем файл dbf_name = str(num_dbf) + '.DBF' dbf_file = MEDIA_ROOT + '/ftp/' + request.user.username + '/' + dbf_name lf = open(dbf_file, "wb") ftp.retrbinary("RETR " + dbf_name, lf.write, 8 * 1024) lf.close() ftp.quit() fp = open(dbf_file, 'rb') response = HttpResponse(fp) #Важно открыть файл и только потом передать его в HttpResponse fp.close() response['Content-Disposition'] = 'attachment; filename=%s' % dbf_name return response