Django: Реверс для 'download_excel/309' не найден. 'download_excel/309' не является допустимым именем функции представления или шаблона
В настоящее время я работаю над созданием приложения Django, которое позволит человеку загрузить excel с данными со страницы. Я пытаюсь подключить гиперссылку к функции представления, но она продолжает возвращать обратное соответствие. Я могу перейти непосредственно по ссылке, и она загружает excel, но когда я не могу загрузить файл index.html из-за ошибки. Я неправильно называю гиперссылку?
urls.py
from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('Excel/<int:study>', views.Excel, name='Excel'),
path('download_excel/<int:study>', views.download_excel, name='download_excel'),
]
index.html
<html>
<title>Download File</title>
</head>
<body>
<enter>
<h1>Download File using Django</h1>
<a href="{% url 'polls:download_excel/309' %}">Download State Impulsivity Excel</a>
</enter>
</body>
</html>
views.py
def download_excel(request, study):
with BytesIO() as b:
writer = pd.ExcelWriter(b, engine='xlsxwriter')
Retrieve(study)
df = pd.DataFrame(data)
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
Names(study)
filename = str(name) + "_" + str(current_time) + ".xlsx"
response = HttpResponse(
b.getvalue(),
content_type=mimetypes.guess_type(filename)
)
response['Content-Disposition'] = 'attachment; filename=%s' % filename
return response
Вы получаете эту ошибку, потому что Django думает, что 'download_excel/309' - это полное имя вашего представления. Имя представления и его позиционный аргумент(ы) должны быть разделены, поэтому вместо этого:
<a href="{% url 'polls:download_excel/309' %}">
...вы должны сделать что-то вроде:
<a href="{% url 'polls:download_excel' '309' %}">
Это создаст URL в вашем коде, который будет выглядеть следующим образом:
<a href="/download_excel/309/"> etc...