无法在django中下载文件
Unable to download file in django
我是 django 的新手,我开发了一个 django 网站,人们可以通过输入书名来下载 epub 文件。我已经检查了关于下载的 django api,代码似乎工作正常(没有错误报告),但是我的浏览器没有弹出下载 window。我正在 127.0.0.1:8000 上进行测试,这是我的部分代码
view.py
def download(request, file_path, book_name):
if os.path.exists(file_path):
response = HttpResponse(content_type="application/epub+zip")
response['X-Sendfile'] = file_path
response['Content-Disposition'] = 'attachment; filename=abc.epub'
print (response)
return response
raise False
根据我的控制台,它可以找到文件路径,并通过打印它显示的消息
<HttpResponse status_code=200, "application/epub+zip">
[26/Mar/2018 18:31:03] "POST / HTTP/1.1" 200 509
似乎一切正常,只是下载 window 没有弹出。有谁知道哪里出了问题?谢谢!
==========
补充:
为了让您全面了解视图文件,下载是按索引调用的,仅此而已:
def index(request):
template = loader.get_template('index.html')
book_name = ''
result = ''
if request.method == "POST": # check if user actually type a book name
book_name = request.POST.get("book_name")
cwd = os.getcwd()
if book_name != '': # search and create are functions from other file which would create an epub file and put it in current directory
result = search.search_ask(book_name)
create.create(book_name)
file_path = os.path.join(cwd, book_name) + '.epub'
download(request, file_path, book_name)
context = {'return_value': book_name,
'result_1': result,
'cwd': cwd}
return HttpResponse(template.render(context, request))
您 return 响应对象 return 由下载方法编辑。大多数是:
return donwload(request, file_path, book_name)
或
download_response = donwload(request, file_path, book_name)
if download_response:
return download_response
else:
# not found or other return.
在您的代码中总是 return
return HttpResponse(template.render(context, request))
我是 django 的新手,我开发了一个 django 网站,人们可以通过输入书名来下载 epub 文件。我已经检查了关于下载的 django api,代码似乎工作正常(没有错误报告),但是我的浏览器没有弹出下载 window。我正在 127.0.0.1:8000 上进行测试,这是我的部分代码
view.py
def download(request, file_path, book_name):
if os.path.exists(file_path):
response = HttpResponse(content_type="application/epub+zip")
response['X-Sendfile'] = file_path
response['Content-Disposition'] = 'attachment; filename=abc.epub'
print (response)
return response
raise False
根据我的控制台,它可以找到文件路径,并通过打印它显示的消息
<HttpResponse status_code=200, "application/epub+zip">
[26/Mar/2018 18:31:03] "POST / HTTP/1.1" 200 509
似乎一切正常,只是下载 window 没有弹出。有谁知道哪里出了问题?谢谢!
========== 补充: 为了让您全面了解视图文件,下载是按索引调用的,仅此而已:
def index(request):
template = loader.get_template('index.html')
book_name = ''
result = ''
if request.method == "POST": # check if user actually type a book name
book_name = request.POST.get("book_name")
cwd = os.getcwd()
if book_name != '': # search and create are functions from other file which would create an epub file and put it in current directory
result = search.search_ask(book_name)
create.create(book_name)
file_path = os.path.join(cwd, book_name) + '.epub'
download(request, file_path, book_name)
context = {'return_value': book_name,
'result_1': result,
'cwd': cwd}
return HttpResponse(template.render(context, request))
您 return 响应对象 return 由下载方法编辑。大多数是:
return donwload(request, file_path, book_name)
或
download_response = donwload(request, file_path, book_name)
if download_response:
return download_response
else:
# not found or other return.
在您的代码中总是 return
return HttpResponse(template.render(context, request))