Django - как скачать файл - PullRequest
       1

Django - как скачать файл

0 голосов
/ 09 апреля 2020

Я пытаюсь создать в своем шаблоне кнопку загрузки для файла csv, созданного моим веб-сайтом (я новичок в Django). Я создал функцию просмотра и обновил urls.py, но при вводе URL я получаю «DoesNotExist: Запрос на сопоставление страниц не существует» («http://127.0.0.1: 8000 / download_table »). Я также хотел бы знать, как создать ссылку / кнопку для загрузки в моем шаблоне html.

views.py:

def download_csv(request):
table_selected = request.POST.get('Table_select')
index_of_table_selected = int(re.search(r'\d+$', table_selected).group())
result_json_selected = request.session.get('result', 'missing')[index_of_table_selected]
dataframe_selected = pd.read_json(result_json_selected)
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=%s' % 'Table.csv'
dataframe_selected.to_csv(path_or_buf=response, sep=';', float_format='%.2f', index=False, decimal=",")

return response

urls.py:

urlpatterns = [
path('', views.index, {'pagename': ''}, name='home'),
path('<str:pagename>', views.index, name='index'),
path('download_table/', views.download_csv, name='download_csv'),]

Кроме того, что я могу добавить в свой шаблон? Что-то вроде этого?

<a href="download_table/" download> Download File</a>

Эта ссылка возвращает ошибку

TypeError: download_csv () получил неожиданный аргумент ключевого слова 'filepath'

1 Ответ

0 голосов
/ 09 апреля 2020

Вы получаете 404, потому что это уровень приложения urls.py. Вам нужно связать его с уровнем проекта urls.py

Вторая ошибка связана с тем, что download_csv(request) должно быть download_csv(request, filepath) или еще лучше, используйте download_csv(request, **kwargs) Он говорит, что у него есть аргумент (например, localhost:8000/argument/), и у вас нет переменной для его хранения.

...