模板视图中的Django文件下载通过值

时间:2018-08-13 15:47:11

标签: python django

我在Django中有一个模板视图,在该模板上,我有一个下载按钮:

<a href="{% url 'smarts_cfg:template-download' cfg_template.pk %}" class="btn btn-primary">Download file</a>

URL:

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

它按预期工作。我想做的是在按下按钮并下载文件之前,我希望用户在模板上填写一个字段,并且我希望将此信息传递到下载视图(而不将其保存在数据库中)。最好的方法是什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

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