Django:在不同应用的html文件之间传递上下文数据



我如何将上下文数据(int他的情况下profile_total变量)创建在我的一个视图到另一个应用程序的html模板?这是我的代码:

app1.views.py

def view_profile(request):
profile_total = UserProfile.objects.all().count()
return render(request, 'profile/user_profile.html', {'profile_total': profile_total})   

app2.stats.html

<div class="container">
<h1> Show </h1>
Profile submitted: {{ profile_total }}
</div>

现在它只显示一个空格,而不是提交的配置文件的计数。谢谢大家的帮助!

您可能正在寻找一个上下文处理器。这个函数将在每次渲染模板时运行,我们可以使用这样的上下文处理器:

#app_name/context_processors.py
def profile_total(request):
fromapp_name.models import UserProfile
return {'profile_total': UserProfile.objects.all().count}

我们不做调用.count()method [Django-doc]在这里延迟查询的求值。这样,我们将只执行数据库查询,如果你渲染profile_total在模板。

现在我们可以用;

注册上下文处理器
# settings.py
# …
TEMPLATES = [
{
# …,
'OPTIONS': {
'context_processors': [
# …,
'app_name.context_processors.profile_total'
],
},
},
]

,然后我们可以使用profile_total在所有的模板,如果我们渲染它与{{ profile_total }}

最新更新