2017-08-24 63 views
0

我有兩個Django模板是依賴的,也就是說,一旦我點擊提交我的第一個模板的形式,我應該重定向到第二個模板的結果,但我遇到錯誤:NoReverseMatch at /tickets_per_day_results/其中tickets_per_day_results是應顯示結果的模板。Django模板不能在瀏覽器中顯示結果

形式

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 %} 

我該如何解決這個問題,以便我可以在瀏覽器的第二個模板中看到結果?

+0

當您調用'tickets_per_day_results'時,它會返回html,所以在您的ajax'data' html中,但您需要json,否則您的代碼不完整。 –

+0

當我打電話給'tickets_per_day_results'時,我應該收到一個JSON對象。我猜第一個模板沒有這樣做......循環應該是這樣的:'tickets_per_day_no_results'用POST方法調用'class ChartData8',該方法給出了'tickets_per_day_results'應該接收的JSON對象的輸出。 –

回答

0

這是定義在某些應用程序或東西?網址是否完全在表格中提及? 「/ tickets_per_day_results /」。可能是因爲您在根urls.py中提到了與應用程序相關的url後綴。也許「something_here/tickets_per_day_results /」。

相關問題