Давайте начнем с , используя формы .Да, вы используете формы django в django, вместо этого сами все заново реализуете.
Создать forms.py
:
from django import forms
FILE_FORMAT_CHOICES = [("csv", "Download PDF"), ("csv", "Download CSV")]
class FileFormatForm(forms.Form):
file_format = forms.ChoiceField(choices=FILE_FORMAT_CHOICES, widget=forms.RadioSelect())
Внутри шаблона, используемого files_page
(просто позвольте django визуализироватьполя, не делайте этого сами):
<form action="{%url 'walk:download_file' file.id%}" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value="Download">
</form>
И, наконец, настройте views.py
:
def files_page(request):
...
context = {
'files': files,
'form': FileFormatForm() # empty / without POST
}
...
def download_file(request, file_id):
assert request.method == 'POST', "users should only come here with POST now"
form = FileFormatForm(request.POST) # populate from POST
if form.data['file_format'] == 'pdf':
return "return PDF file response here"
else:
return "return CSV file response here"
Примечание: вы не используете tab
в Python.Вместо этого используйте 4x пробелов.
Другое примечание: Представления на основе классов для дальнейшего уменьшения количества шаблонов.