【问题标题】:Django template not displaying results in browserDjango模板不在浏览器中显示结果
【发布时间】:2018-02-01 21:19:51
【问题描述】:

我有两个依赖的 Django 模板,也就是说,一旦我在第一个模板的表单上点击提交,我应该被重定向到第二个模板中查看结果,但我遇到了错误:NoReverseMatch at /tickets_per_day_results/ where tickets_per_day_results 是应该显示结果的模板。

表格

class DropDownMenuForm(forms.Form):
    week = forms.ChoiceField(choices=[(x,x) for x in range (1,53)])
    year = forms.ChoiceField(choices=[(x,x) for x in range (2016,2021)])

Views.py

class ChartData8(APIView):

def get(self, request):
    template_name = 'personal_website/tickets_per_day_no_results.html'
    form = DropDownMenuForm()
    return render(request, template_name, {'form': form})

def post(self, request):
    template_name = 'personal_website/tickets_per_day_results.html'
    #print(template_name)
    if request.method == "POST":
        year = request.POST.get('select_year', None)
        week = request.POST.get('select_week', None)
        ... do stuff ....
    return render(request, template_name, data)

urls.py

url(r'^tickets_per_day_no_results/$', ChartData8.as_view()),
url(r'^tickets_per_day_results/$', ChartData8.as_view()),

模板 1:tickets_per_day_no_results:这是您从下拉菜单中选择选项的第一个模板。我的猜测是对第二个模板的操作导致了问题。

{% extends "personal_website/header.html"%}
{% block content %}
<h3>Please, select the year and week number to retrieve the data.</h3>
<form id="search_dates" method="POST" action="/tickets_per_day_results/"> {% 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>

模板 2:tickets_per_day_results:这是您应该看到结果的第二个模板。

<script>
{% block jquery %}

var endpoint = '/tickets_per_day_results' 

var days_of_data = []
var label_number_days = []

$.ajax({
    method: "POST",
    url: endpoint,
    dataType: 'json',
    success: function(data){
        console.log(data)
        label_number_days = data.label_number_days
        days_of_data = data.days_of_data
        setChart()

    },
    error: function(error_data){
        console.log("error on data")
        console.log(error_data)
    }
})
function setGraph(){....}
{% 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 %}

如何解决此问题,以便在浏览器的第二个模板中看到结果?

【问题讨论】:

  • 当你调用tickets_per_day_results它返回html,所以在你的ajax data html,但是你需要json,或者你的代码不完整。
  • 当我调用tickets_per_day_results 时,我应该会收到一个 JSON 对象。我猜第一个模板没有这样做......循环应该是这样的:tickets_per_day_no_results 使用 POST 方法调用class ChartData8,该方法给出了tickets_per_day_results应该接收的 JSON 对象的输出>

标签: jquery django html python-3.x django-forms


【解决方案1】:

这是在某些应用程序中定义的吗?表格中是否完全提到了网址? “/tickets_per_day_results/”。可能是您缺少与应用程序相关的 url 后缀,您在根 urls.py 中提到。也许是“something_here/tickets_per_day_results/”。

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2016-07-02
    • 2011-02-27
    • 2018-12-15
    • 1970-01-01
    • 2018-06-06
    相关资源
    最近更新 更多