Я использовал пакет под названием
xhtml2pdf .
Пока все было хорошо, и пакет действительно прост в использовании, если мне не нужны данные для определяется конечным пользователем. Проблема возникает, когда я даю пользователям возможность выбирать, что будет отображаться в PDF.
Пользователь может выбрать из таблицы, нажав на кнопку, связанную с этим объектом. Затем я сохраню этот идентификатор объекта в массиве, который затем будет отправлен через AJAX в мое представление рендера, чтобы соответствующий запрос мог быть передан в контекст.
Звучит просто, и я уверен, Там есть решение, но я не знаю ни одного!
Вот мой javascript. Короче говоря, я не собираюсь показывать сценарий, который я использую для подготовки массива, который я отправляю в представление.
function ajaxsender(clicked_id){
var a = clicked_id
$.ajax({
url : "{% url 'bom-ajax'%}",
method : "POST",
data : {
'csrfmiddlewaretoken' : "{{ csrf_token }}",
'arr[]' : arr ,
'pk' : a
},
success : function(result) {
console.log(result);
}
})};
Это представление, которое я использую для получите этот пост-запрос.
class BomAjax(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
listy = request.POST.getlist('arr[]')
trials = FormulationTrial.objects.filter(pk__in = listy)
data = {
'product' : ProductFormulation.objects.filter(formulation_id = pk),
'trials' : trials,
'item' : TrialItems.objects.filter(formulationTrial__productFormulation__formulation_id__contains = pk),
'itemdetails' : ItemDetails.objects.filter(itemdetail_id__in = TrialItems.objects.filter(formulationTrial__productFormulation__formulation_id__contains = pk).values_list('itemdetail', flat=True).distinct().order_by()),
}
pdf = render_to_pdf('rnd/bom_pdf.html', data)
return HttpResponse(pdf , content_type='application/pdf')
При запуске кода не появляется ошибка, и мой журнал консоли показывает мне правильный результат, однако PDF-файл не отображается, перенаправление не происходит.
Пожалуйста, помогите брату здесь!