我在 django 中有一个模板视图,在该模板上我有一个下载按钮:
<a href="{% url 'smarts_cfg:template-download' cfg_template.pk %}" class="btn btn-primary">Download file</a>
网址:
path('<int:pk>/edit/download/', smarts_cfg_views.CgfFileDownload.as_view(), name='template-download'),
视图:
class CgfFileDownload(View):
def get(self, request, pk):
content = MODEL_NAME.objects.get(pk=pk).name
response = HttpResponse(content, content_type='text/plain')
response['Content-Disposition'] = 'attachment; filename=%s' % 'testing.txt'
return response
它按预期工作。我想做的是在按下按钮并下载文件之前,我希望用户在模板上填写一个字段,我想将此信息传递给下载视图(不将其保存在数据库中(。最好的方法是什么? 谢谢!
将a
标签替换为button
。
将form
标记包裹在按钮上并向其添加type=submit
。
在form
中,您可以添加input
字段。
模板:
<form method="get" action="{% url 'smarts_cfg:template-download' cfg_template.pk %}">
<!-- your input field -->
<input type="text" name="fieldName" />
<button class="btn btn-primary" type="submit">Download file</button>
</form>
查看:
class CgfFileDownload(View):
def get(self, request, pk):
# query parameters are stored in `request.GET` dictionary
fieldValue = request.GET.get('fieldName')
content = MODEL_NAME.objects.get(pk=pk).name
response = HttpResponse(content, content_type='text/plain')
response['Content-Disposition'] = 'attachment; filename=%s' % 'testing.txt'
return response