Python Django-在模板中使用函数

Python Django-在模板中使用函数,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我正试图找出如何为我的用户创建一个进度跟踪器,以便他们能够看到他们填写的表单的百分比 我不知道如何创建函数,然后在模板中使用/调用它 视图-计算进度功能 我的类中的函数目前看起来是这样的(为了避免混乱,我特意将表单排除在类中): 其思想是,它将检查数据库中存在哪些值的数组,如果存在0,1,2,3个值,它将显示25%、50%、75%、100%。我真的不知道如何让这个函数在我的模板中工作?我怎么称呼它?也许函数在类外?但我如何针对评估的特定pk 更新-更多信息 我有一个评估模型和一个叫做关系的模型,

我正试图找出如何为我的用户创建一个进度跟踪器,以便他们能够看到他们填写的表单的百分比

我不知道如何创建函数,然后在模板中使用/调用它

视图-计算进度功能

我的类中的函数目前看起来是这样的(为了避免混乱,我特意将表单排除在类中):

其思想是,它将检查数据库中存在哪些值的数组,如果存在0,1,2,3个值,它将显示25%、50%、75%、100%。我真的不知道如何让这个函数在我的模板中工作?我怎么称呼它?也许函数在类外?但我如何针对评估的特定pk

更新-更多信息

我有一个评估模型和一个叫做关系的模型,其中我有四个值:

 value = [evaluation.eval_relations.communication, evaluation.eval_relations. motivate_others,
                     evaluation.eval_relations.development, evaluation.eval_relations.cooperation]

我有一个评估模型的外键,名为eval_relations。

以下是我的假设:

用户模型

具有5个字段(f1、f2、f3、f4、f5)的纵断面模型和具有用户模型的OneToOneField

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_name')
    f1 = ...
    .
    .
表单中将有5个字段。我们想显示数据库中保存了多少字段

当用户第一次打开表单时(当配置文件模型中没有保存数据时),这将显示0%已完成

如果用户先前保存了3个字段,则会显示60%

我假设用户(填写表单的用户)已登录

视图.py

def index(request):
    user = request.user
    if user.user_name is None:
        per = 0
    else:
        b = [user.user_name.f1, user.user_name.f2, user.user_name.f3, user.user_name.f4, user.user_name.f5]
        count = 0
        for j in b:
            if j:
                count += 1
        per = count * 20
    if request.method == 'POST':
        form = FormName(request.POST)
        if form.is_valid():
            form_save = form.save(commit=False)  # assuming you are using ModelForm.
            form_save.user = user  # user is OneToOneField
            form_save.save()
            # if you don't redirect after save, django will show same page after saving.
    else:
        form = FormName()
    context = {
        'form': form,
        'per': per
    }
    return render(request, 'templateName.html', context)
模板

<h1>{{ per }}% completed</h1>
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form  }}
    <input type="submit" value="submit">
</form>
{{per}}已完成%
{%csrf_令牌%}
{{form}}

我用这个来检查配置文件完成的百分比。如果您有不同的情况,请发表评论。

似乎很有趣,也许您可以使用django custom template tags()或Ajaxi。如果您想在不刷新页面的情况下调用服务器,那么您必须使用ajax。我先看看django ajax库。用户填写表单时,百分比或数据库中保存的数据百分比是否发生变化?我不需要在不刷新页面的情况下进行更新,因为当用户保存评估并返回“评估概述”时,页面将更新页面中,他们将能够看到其评估的概述和进度。我一直在看模板标记。但我仍在努力弄清楚如何使函数与模板一起工作。@保存评估时,从数据库中提取数据的百分比这似乎是正确的方向。您是否正确地理解了您正在保存modelForm(在此上下文中为概要文件),然后检查哪些值存在?我已经用更正确的条件更新了我的帖子。我不使用用户作为pk,而是使用我拥有的评估模型,它有一个名为Relations的modelForm的外键,我正在检查数据库中的值,正如您在配置文件模型中提到的那样。
<h1>{{ per }}% completed</h1>
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form  }}
    <input type="submit" value="submit">
</form>