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 %}
我該如何解決這個問題,以便我可以在瀏覽器的第二個模板中看到結果?
當您調用'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對象的輸出。 –