Скачать статические файлы по имени Django - PullRequest
0 голосов
/ 07 декабря 2018

Я создаю сайт с Django, где пользователи загружают файл (например, test.png), который затем обрабатывается, и в локальном каталоге ../django/myproject/mysite/csv/test.csv создается новый файл (test.csv).Пользователи могут продолжать загружать файлы и создавать больше .csv файлов.Страница результатов покажет файлы .csv, и пользователь сможет загрузить эти файлы.

Однако я запутался, поскольку не могу их загрузить.

views.py

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

results.html

<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>

urls.py

urlpatterns = [
    ...
    path('results/', views.results, name='results'),
    path(
        'download_csv/(?P<csvfile>.+)$/',
        views.download_csv,
        name='download_csv'),             # or do I add something here??
]

I 'Извините, если мой вопрос неясен.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 07 декабря 2018

Вам нужно получить статический 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...