Загрузите страницу шаблона HTML, заполненную формой Django - PullRequest
0 голосов
/ 30 октября 2019

У меня есть страница шаблона, к которой я обращаюсь, когда заполняю свой 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-страницу, но я не могу правильно ее использовать.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...