通过名称Django下载静态文件

时间:2018-12-07 06:58:50

标签: python django download

我正在使用Django创建一个站点,用户在该站点上载一个文件(例如test.png),然后对该文件进行处理,并在本地目录{中创建一个新文件(test.csv)。 {1}}。 用户可以继续上传文件,并创建更多../django/myproject/mysite/csv/test.csv个文件。结果页面将显示.csv个文件,用户可以下载这些文件。

但是,我很困惑,因为我无法下载它们。

views.py

.csv

results.html

def make_csv(request):
    ...
    csv_filename = str(in_csv_file)

    #send to result page
    return render(request, 'thesite/results.html', {"csv_filename": csv_filename})

def download_csv(request, csvfile):
    path = os.path.join(SETTING_DIR)
    filename = path + csvfile + ".csv"
    filewrapper = FileWrapper(open(filename, 'rb'))
    response = HttpResponse(filewrapper, content_type='text/csv')
    response['Content-Length'] = os.path.getsize(filename)
    response['Content-Disposition'] = 'attachment; filename="{}"'.format(csvfile +".csv")

    return response

urls.py

<tbody>
    <tr>
        <td></td>
        <td>{{csv_filename}}</td>
        <td>
            <a href='/thesite/download_csv/{{csv_filename}}'>
                Download                  {# do i add something here?  #}
            </a>
        </td>
    </tr>
</tbody>

很抱歉,我的问题不清楚。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要获取静态URL。另外,请确保正确设置了STATIC_ROOT和STATIC_URL。

{% load static %}     #first load static files at the top of template

<a href="{% static '/path/to/{{csv_filename}}' %}">Download</a>