Как получить данные из представлений в шаблон Django

Из моей модели я загружаю файл, В моих представлениях я выполняю некоторые операции над файлом .Я использую DetailView из CBV Django, В котором я получаю один объект и выполняю некоторые операции над ним. Теперь я хочу получить данные (после выполнения операций) в моем шаблоне. Я знаю, как показать файл в шаблоне, потому что файл находится в модели. Но функции не находятся в моделях, и я хочу вывести их в моем шаблоне. Мой models.py выглядит так:

class FileUpload(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, blank=True , null=True)
    file = models.FileField(upload_to='files')




    def get_absolute_url(self):
        return reverse('home')

мой views.py имеет вид :

class PostDetailView(DetailView):
    context_object_name = "object_list"
    template_name = "post_detail.html"


    def get_object(self, *args,**kwargs):
        request = self.request
        pk = self.kwargs.get('pk')
        instance = FileUpload.objects.get(id = pk) #I want to print this  instance

        if instance is None:
            raise Http404("File Does not EXIST")
        else:
            pdfFileObj = open(instance.file.path, 'rb')
            pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
            print('number of pages = ',pdfReader.numPages)
            pageObj = pdfReader.getPage(0)
            print(pageObj.extractText())     #I want to print this
            query = pageObj.extractText()

            for j in search(query, tld="co.in", num=10, stop=10, pause=2):
                print(j)       #I want to print this

            pdfFileObj.close()
        return instance

Попробуйте сначала добавить кверисет как FileUpload.objects.all(), чтобы ваше детальное представление знало, где автоматически найти ваш объект. Таким образом, вам не придется писать свои собственные get_object.

Затем вы можете переместить все эти обработки в get_context_data, а затем передать их в шаблон, если вы хотите их отобразить, вот так:

class PostDetailView(DetailView):
    context_object_name = "object_list"
    template_name = "post_detail.html"
    queryset = FileUpload.objects.all()

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)

        pdfFileObj = open(self.object.file.path, 'rb')
        pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
        print('number of pages = ',pdfReader.numPages)
        pageObj = pdfReader.getPage(0)
        extracted_text = pageObj.extractText())
        query = pageObj.extractText()

        search_results = []
        for j in search(query, tld="co.in", num=10, stop=10, pause=2):
            search_results.append(j)

        pdfFileObj.close()

        context['extracted_text'] = extracted_text
        context['search_results'] = search_results

        return context

Затем вы должны иметь возможность использовать их в своем шаблоне:

{{ extracted_text }}

{{ search_results }}

А чтобы вывести экземпляр, просто используйте:

{{ object }}
Вернуться на верх