Я пытаюсь вывести HTML или файлы PDF для загрузки. Я написал несколько строк кода для создания файла html & PDF из шаблона и его загрузки.
- Однако мой код работает только для Chrome браузера . Когда я пытаюсь загрузить его из другого браузера (например, DuckDuck Go), я загружаю свою текущую страницу (например, roll. html) вместо файла (т.е. файла, отображаемого из html_output_template. html), который я хочу экспорт.
Вот код, который я пробую: views.py
def generate_html(request, res):
cdict = {'res':res, 'date':datetime.date.today()}
if request.method == 'POST':
inv_form = InvoiceInfoForm(data= request.POST)
if inv_form.is_valid():
inv_data = inv_form.cleaned_data
cdict = {'res':res, 'inv_data':inv_data, 'date':datetime.datetime.today().strftime("%d %h %Y")}
template = get_template('app_name/html_output_template.html')
html = template.render(cdict)
response = HttpResponse(html, content_type='application/force-download')
filename = "Inv_%s.html" %(datetime.datetime.today().strftime("%d_%h_%y_%H_%M_%S"))
content = "attachment; filename= %s" %(filename)
response['Content-Disposition'] = content
return response
def MyView(request):
"""Some
Calculations
Here"""
if 'download_pdf' in request.POST:
if inv_form.is_valid():
return generate_pdf(request, res)
elif 'download_html' in request.POST:
if inv_form.is_valid():
return generate_html(request, res)
return render(request,'app_name/roll.html',context=cdict)
Пример html шаблона: html_output_template. html
{% load staticfiles %}
<!-- Few Lines here -->
<tr>
<td style="text-align:left">1</td>
<td style="text-align:left">{{inv_data.description}}</td>
<td style="text-align:right">{{res.rate_per_gram}} {{res.rate_kilo_gram}}</td>
<td style="text-align:right">{{res.wgt_of_goods}}</td>
<td style="text-align:right">{{res.total_amount}}</td>
</tr>
Я считаю, что есть проблема с моим HttpResponse
, который автоматически исправляется в Chrome, а не в других браузерах. Я не могу решить эту проблему, помогите пожалуйста