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