首页 > 解决方案 > 下载 Django 表单填充的 HTML 模板页面

问题描述

我有一个模板页面,当我填写Django form. 这个页面很简单HTML page,数据来自我的表单。我希望能够下载填充的模板。也就是说,获取一个允许下载模板的浏览器窗口或通过单击将 HTML 模板保存在某处的按钮(因为此 HTML 模板需要在邮件中插入)。

这是我的views.py文件中的代码:

class TemplateGenerator(TemplateView):
    ''' This class displays the form and lets to save data into my database.
        It redirects users to the filled HTML template '''
    form_class = CommunicationForm
    template_name = 'form.html'
    success_url = '/HTML_Result/'

    def get(self, request):
        form = self.form_class()
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = self.form_class(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('HTML_Result')
        args = {'form': form}
        return render(request, self.template_name, args)


class HTMLResult(TemplateView):
    ''' This class displays the template filled thanks to the form from TemplateGenerator() class '''
    template_name = 'template_1.html'

    def get(self, request):
        data = Communication.objects.values().latest('id')
        self.donwload_html()
        return render(request, self.template_name, {'data': data})

    def donwload_html(self):
        file_path = os.path.join(settings.MEDIA_ROOT, 'media')
        if os.path.exists(file_path):
            with open(file_path, 'rb') as fh:
                response = HttpResponse(fh.read(),
                                        content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
                response['Content-Disposition'] = 'inline; filename=' + 'test'
                return response
        raise Http404

file_path当我尝试访问媒体文件夹时,我的权限被拒绝。但在我看来,与我想要获得的功能相比,我的功能可能是错误的。

你有什么主意吗 ?

我知道我需要使用Content-Disposition才能下载 HTML 页面,但我找不到正确使用它的方法。

提前谢谢你

标签: pythondjangodjango-templatesdjango-views

解决方案


推荐阅读