Python 从另一个文件调用函数以在模板中使用

Python 从另一个文件调用函数以在模板中使用,python,django,python-3.x,Python,Django,Python 3.x,我有一个函数在这个文件中创建一个百分比 status.py class Status: read_books = Books.objects.filter(read="True") all_books = Books.objects.all() def percentage(self): asdf = get_percentage(len(self.read_books),len(self.all_books)) return asdf

我有一个函数在这个文件中创建一个百分比

status.py

class Status:
    read_books = Books.objects.filter(read="True")
    all_books = Books.objects.all()

    def percentage(self):
        asdf = get_percentage(len(self.read_books),len(self.all_books))
        return asdf
我正在尝试在我的模板中使用此函数,通过在我的模板中使用类似的内容来显示此百分比

{{ status.percentage }}
这可能吗?为了做到这一点,我是否必须在我的观点中加入逻辑

也许我可以把这个函数放在我的视图类中,然后从那里调用它

编辑:

views.py

class BooksView(TemplateView):
    template_name = 'KPI/Books.html'
    read_books = Books.objects.filter(read="True")
    all_books = Books.objects.all()


    def get_context_data(self, **kwargs):
        context = super(BooksView, self).get_context_data(**kwargs)
        context['all_books'] = self.all_books
        context['read_books'] = self.read_books    
        return context
对。您只需将状态对象传递给模板引擎即可进行渲染。。这是一个上下文变量

例如,对于视图,可以将其编写为:

from some_module.status import Status

def some_view(request):
    # ...
    status = Status()
    return render(request, 'some_template.html', { 'status': status })
如果您使用了,您可以在上下文中添加status对象。要执行此操作,请重写get_context_data方法:


在渲染中传递对状态对象的引用。。调用,以“status”作为变量名。只需一句话:就我所见,status不是一个模型类,它更像一个实用类+1.无论如何:。是的,这不是一个模型类,这个答案很有效,谢谢
from some_module.status import Status

class BooksView(TemplateView):
    template_name = 'KPI/Books.html'
    read_books = Books.objects.filter(read="True")
    all_books = Books.objects.all()

    def get_context_data(self, **kwargs):
        context = super(BooksView, self).get_context_data(**kwargs)
        context['all_books'] = self.all_books
        context['read_books'] = self.read_books
        context['status'] = Status()
        return context
class myView(View):
    #...
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        myStatus = Status()
        context['status'] = myStatus
        return context