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