Javascript 如何在Django中将数据值从视图传递到模板?

Javascript 如何在Django中将数据值从视图传递到模板?,javascript,jquery,ajax,django,python-3.x,Javascript,Jquery,Ajax,Django,Python 3.x,目前,我有两个模板:no_results_tickets.html和results_tickets.html。第一个模板包含两个下拉菜单,用于选择年份和周数,因此,一旦单击“提交”按钮,web应用程序将从web API中查找所选周和年的票证,然后在另一个模板中显示结果 我现在缺少的是如何在第二个模板中显示这些结果 这就是我目前所拥有的 forms.py 模板no_results_tickets.html 看法 结果在我的控制台中给出,但我希望它们在results_tickets.html模板中看

目前,我有两个模板:no_results_tickets.html和results_tickets.html。第一个模板包含两个下拉菜单,用于选择年份和周数,因此,一旦单击“提交”按钮,web应用程序将从web API中查找所选周和年的票证,然后在另一个模板中显示结果

我现在缺少的是如何在第二个模板中显示这些结果

这就是我目前所拥有的

forms.py

模板no_results_tickets.html

看法

结果在我的控制台中给出,但我希望它们在results_tickets.html模板中看到。我缺少的是从数据字典中检索内容的技能,因此我可以获取值并在第二个模板中绘制它们

模板结果\u tickets.html


也许您只是缺少数据周围的django标记{{}}? 您可能还需要将python字典转换为json字符串,以便在js中使用它:

在views.py中,修改为:

import json
...
data = {"labels":days, "days_of_data": count_data}
my_data = {'my_data': json.dumps(data)}
return render(request, template_name, my_data)
如果要添加到模板results_tickets.html:


它可能会起作用

您是否尝试过将变量放入{{data.which_property_i__想要}}中,我应该将双标记放在哪个部分?我应该将data={{data | safe}放在哪个部分?脚本内部?如果它不工作,请检查console.logdata是否能够访问javascriptmy_data=json.dumpsdata中的数据,以避免冲突。我遇到的错误上下文必须是dict而不是str。好的,很抱歉,我使用基于函数的视图已经有一段时间了,请尝试mydata={'my_data':json.dumpsdata}无法使用console.logdata或console.log{{data}访问数据
<h3>Please, select the year and week number to retrieve the data.</h3>
<form id="search_dates" method="POST" action="/results_tickets/"> {% csrf_token %}
<h6>Select year</h6>

<div class="row">
    <div class="col-sm-8">
        <select name="select_year">
            <option value = {{form.year}}></option>
        </select>
    </div>
    <div class="col-sm-8">
        <h6>Select week</h6>
        <select name="select_week">
            <option value= {{form.week}}></option>
        </select>
        <button type="submit">Search</button>
    </div>
</div>
</div>
url(r'^no_results_tickets/$',views.tickets_results_test, name='no_results_tickets'),
url(r'^results_tickets/$',views.tickets_results_test, name='results_tickets'),
@api_view(['GET','POST',])
def tickets_results_test(request):

    if request.method == "GET":
        ''' Template for displaying the dropdown menus.'''
        template_name = 'personal_website/no_results_tickets.html'
        form = DropDownMenuForm()
        return render(request, template_name, {'form': form})

    elif request.method == "POST":

        template_name = 'personal_website/results_tickets.html'
        year = request.POST.get('select_year', None)
        week = request.POST.get('select_week', None)
        # ... do stuff ....

        data = {"labels":days, "days_of_data": count_data}
        return render(request, template_name, data)
<script>
{% block jquery %}

//I tried to get the content of the dict data with the following code but I was unsuccessful
var days_of_data = []
var label_number_days = []
days_of_data = data.count_data
label_number_days = data.days


function setChart(){
var ctx_tickets_per_day       = document.getElementById("tickets_per_day")

var tickets_per_day = new Chart(ctx_tickets_per_day, {
    showTooltips: false,
    type:'bar',
    data: {
        labels: label_number_days,
        datasets :
            [{
                label: 'User 01',
                data: [days_of_data[0],days_of_data[1],days_of_data[2],days_of_data[3],days_of_data[4],days_of_data[5],days_of_data[6]],
                backgroundColor: 'rgba(255, 99, 132, 0.6)',
                borderColor: '#777',
                borderWidth: 1,
                hoverBorderWidth: 3,
                hoverBorderColor: '#000'
            },
            { ....//graph the values for the rest of users}
    })
}

{% endblock %}
</script>
{% block content %}

<div class ='row'>
<div class="col-sm-12" url-endpoint='{% url "tickets_per_day_results" %}'>
        <div>
            <canvas id="tickets_per_day" width="800" height="500"></canvas>
        </div>
</div>
</div>
{% endblock content %}
import json
...
data = {"labels":days, "days_of_data": count_data}
my_data = {'my_data': json.dumps(data)}
return render(request, template_name, my_data)
<script>
{% block jquery %}


var days_of_data = []
var label_number_days = []
var data = {{my_data|safe}}
days_of_data = data.count_data
label_number_days = data.days

....
{% endblock %}
</script>