2017-08-24 40 views
0

Ich habe zwei Django-Vorlagen, die abhängig sind, das heißt, sobald ich auf das Formular meiner ersten Vorlage zu treffen, sollte ich weitergeleitet werden, um die Ergebnisse in der zweiten Vorlage zu sehen, aber ich begegne Der Fehler: NoReverseMatch at /tickets_per_day_results/ Dabei ist tickets_per_day_results die Vorlage, die die Ergebnisse anzeigen soll.Django Vorlage zeigt keine Ergebnisse im Browser

Forms

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()), 

Vorlage 1: tickets_per_day_no_results: Dies ist die erste Vorlage, in der Sie Ihre Optionen aus den Dropdown-Menüs auswählen. Meine Vermutung ist, dass die Aktion für die zweite Vorlage das Problem verursacht.

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

Template 2: tickets_per_day_results: Dies ist die zweite Vorlage ist, wo Sie die Ergebnisse sehen sollte.

Wie kann ich dieses Problem beheben, damit ich die Ergebnisse in der zweiten Vorlage in meinem Browser sehen kann?

+0

Wenn Sie 'tickets_per_day_results' aufrufen, gibt es html zurück, also in Ihrem Ajax' data' html, aber Sie brauchen json, oder Ihr Code ist nicht voll. –

+0

Wenn ich 'tickets_per_day_results' aufruft, sollte ich ein JSON-Objekt erhalten. Ich denke, die erste Vorlage tut das nicht ... Der Zyklus sollte so aussehen: 'tickets_per_day_no_results' ruft' class ChartData8' mit der POST-Methode auf, die die Ausgabe des JSON-Objekts liefert, das von 'tickets_per_day_results' empfangen werden soll –

Antwort

0

Ist dies in einer App oder etwas definiert? Wird die URL vollständig in dem Formular erwähnt? "/ tickets_per_day_results /". Möglicherweise fehlt dir das URL-Suffix für die App, die du im root urls.py erwähnt hast. Vielleicht "etwas_hier/tickets_per_day_results /".