Django:无法下载生成文件

Hel*_*rld 0 python django download httpresponse django-templates

我正在尝试生成一个文本文件并从模板中的链接下载它,但单击链接后没有任何反应.

这是我在模板中的链接.

<a href="{% url 'download' %}"><h2>{{ fname }} {{ lname }}</h2></a>
Run Code Online (Sandbox Code Playgroud)

这是我的看法

def report_generate(request):
    f = open("test.txt", "w+")
    for i in range(10):
        f.write("This is line %d\r\n" % (i + 1))

    response = HttpResponse(f.read(), content_type='text/plain')
    filename = "guru99.txt"
    response['Content-Disposition'] = 'attachment; filename="%s"' % filename
    return response
Run Code Online (Sandbox Code Playgroud)

这是我的urls.py

urlpatterns = [
path('admin/', admin.site.urls),
path('', qrview.index),
path('forms/new_profile', formsview.profile_create, name="aaa"),    # test
path('forms/new_course', formsview.course_create, name="ddd"),      # test
path('forms/edit_course', formsview.course_edit, name="edit_course"),   
path('report/', reportview.report, name="report"),
path('report/', reportview.report_generate, name="download"),
#path('admin/', admin.site.urls),
#path('admin/', admin.site.urls),
Run Code Online (Sandbox Code Playgroud)

]

Moh*_*nki 6

因为在您的情况下f.read()返回一个空字符串,您必须手动移动文件开头的指针,以便在写入后读取内容

def report_generate(request):
  f = open("test.txt", "w+")
  for i in range(10):
    f.write("This is line %d\r\n" % (i + 1))
  f.seek(0) # Move the pointer at the beginning
  response = HttpResponse(f.read(), content_type='text/plain')
  f.close() # Close the file
  filename = "guru99.txt"
  response['Content-Disposition'] = 'attachment; filename="%s"' % filename
  return response
Run Code Online (Sandbox Code Playgroud)