2016-12-28 1 views
1

ich als Eingang 2 Termine bekommen erwarte zum Spiel:NoReverseMatch bei dem Versuch, Termine mit regulären Ausdrücken in URL in meiner URL

url(r'^export/range/csv/(?P<start_date>\d+)/(?P<end_date>\d+)/$', views.export_payment_range_csv, name="export_payment_range_csv"), 

Aber ich bin immer Fehler:

NoReverseMatch bei/Zahlung/list/range/Reverse für 'export_payment_range_csv' mit Argumenten '()' und Schlüsselwortargumenten '{startdatum: datetime.date (2016, 2, 1), u'end_date': datetime.date (2016, 12, 31)} nicht gefunden. 2 Muster versucht: ['Bedingung/Export/Bereich/CSV/(? P \ d +)/(? P \ d +)/$', 'Zahlung/Export/Bereich/CSV/(? P \ d +)/(? P \ d +)/$ ']

Ich nehme an, dies hat mit regulären Ausdruck in meiner URL-Datei zu tun. was mache ich falsch?

UPDATE: URL ich Zugriff

<li><a href="{% url 'export_payment_range_csv' start_date=start_date end_date=end_date %}">CSV for current range payments</a> 

Wenn Startdatum und Enddatum ich während Vorlage bekam aus der Sicht macht.

Ich erwarte, dass Daten im Blick Seite

payment_list = LeasePaymentFilter(request.GET, queryset=LeasePayment.objects.filter(payment_date__range=[start_date, end_date])) 
+2

Und auf was ist die URL, auf die Sie zugreifen möchten? – Wtower

+0

Ich schrieb Update in Frage. –

Antwort

3

Ihre URL-Parameter erwartet Ziffern (\d+), zum Beispiel:

reverse("export_payment_range_csv", kwargs={ 
    'start_date': '123', 
    'end_date': '456', 
}) 

, aber sie passieren datetime.date Instanzen:

reverse("export_payment_range_csv", kwargs={ 
    'start_date': d1, 
    'end_date': d2, 
}) 

Überprüfen Sie die Ansicht selbst (die Funktion views.export_payment_range_csv()) und sehen Sie Welches Format wird für die Parameter erwartet und generiert die erforderliche Zeichenfolge, zum Beispiel:

def format_my_date(d): 
    return d.strftime("%Y%m%d") 

reverse("export_payment_range_csv", kwargs={ 
    'start_date': format_my_date(d1), 
    'end_date': format_my_date(d2), 
}) 
+0

Danke. View Erwartet Daten, da ich den Datumsbereich auf der Betrachtungsseite verwende payment_list = LeasePaymentFilter (request.GET, queryset = LeasePayment.objects.filter (payment_date__range = [start_datum, end_datum])) –

Verwandte Themen