目前我有一个模板文件,它根据一个Django视图显示一些图形结果,但是,我想在同一个模板中显示另一个函数视图的另一组结果。这些是细节:
第一个功能视图 - 这样可以正常工作,将值发送到第二个功能视图并将结果呈现到模板中。
@api_view(['GET','POST',])
def tickets_results_test(request):
if request.method == "GET":
# ...do stuff...
return render(request, template_name, {'form': form})
elif request.method == "POST":
template_name = 'personal_website/tickets_per_day_results.html'
year = request.POST.get('select_year', None)
week = request.POST.get('select_week', None)
receive_send_year_week(year,week)
... rest of the code ...
data = {
"label_number_days": label_number_days,
"days_of_data": count_of_days,
}
my_data = {'my_data': json.dumps(data)}
return render(request, template_name, my_data)
第二个功能视图 - 我想将这些结果返回到模板文件中。
def receive_send_year_week(year,week):
return year, week
模板文件 - 我想显示
下方第二个功能视图的结果您目前正在审核:
{% extends "personal_website/header.html" %}
<script>
{% block jquery %}
var days_of_data = data.days_of_data
function setChart(){
....do stuff to generate graphs...
....
}
{% endblock %}
</script>
{% block content %}
<div class='row'>
<p>You are currently reviewing:</p>
</div>
<div class="col-sm-10" url-endpoint='{% url "tickets_per_day_results" %}'>
<div>
<canvas id="tickets_per_day" width="850" height="600"></canvas>
</div>
</div>
</div>
{% endblock content %}
如何显示模板内第二个功能视图的结果?我是否需要大量修改第一个视图?
答案 0 :(得分:1)
我想在html中显示这两个值,我想写它们 在html文件中。如果你说我已经拥有它,如何调用它们 它们?
你可以简单地将它放在你的数据字典中,也就是说,如果你提供的代码部分工作,我现在不能测试它,但你会得到它的结果:
template_name = 'personal_website/tickets_per_day_results.html'
year = request.POST.get('select_year', None)
week = request.POST.get('select_week', None)
data = {
"label_number_days": label_number_days,
"days_of_data": count_of_days,
"year": year,
"week": week,
}
然后在你的模板中:
var year = data.year
var week = data.week
答案 1 :(得分:0)
我想我知道你想做什么,尽管还不清楚,正如其他人指出的那样。
您的视图是api视图,因此您可能不想处理django模板。您应该对此视图进行Ajax调用并替换“渲染”#39;在这种情况下由JsonResponse。
另一种方法是做简单的django并使用它的模板。所以你应该摆脱&#39;如果POST GET&#39;您的视图中的装饰器部件(我也没有看到任何POST请求),并且模板中的任何位置都使用{{my_data}}
来打印您的数据。要在视图中访问count_of _days define,您可以执行{{my_data.days_of_data}}
。
这里要做的事情是:
django模板使用您通过字典(my_data)发送的数据呈现html。您可以使用模板中的双花括号表示法访问此数据。
Django视图可以用作api端点。在这种情况下,您发出Ajax请求,视图应返回一个由Ajax处理的json对象。在视图中没有提及任何模板。
希望它有所帮助!