2016-12-28 64 views
1

匹配正則表達式的日期在我的網址我期望能獲得2個日期作爲輸入:NoReverseMatch試圖在URL

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

但我得到的錯誤:

NoReverseMatch在/支付/ (2016,2,1),u'end_date': datetime.date(2016, 12,31)}'找不到。嘗試2種模式: ['condition/export/range/csv /(?P \ d +)/(?P \ d +)/ $', 'payment/export/range/csv /(?P \ d + )/(?P \ d +)/ $']

我認爲這與我的URL文件中的正則表達式有關。 我做錯了什麼?

UPDATE: URL訪問I

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

當開始日期和結束日期我的模板從視圖渲染過程中得到。

我期望在觀察側日期

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

什麼是您嘗試訪問的網址? – Wtower

+0

我寫了更新問題。 –

回答

3

您的網址參數的預期數字(\d+),例如:

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

,但你通過datetime.date實例:

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

檢查視圖本身(功能views.export_payment_range_csv())並查看例如:

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

謝謝。查看期望日期,因爲我在視圖側使用日期範圍 payment_list = LeasePaymentFilter(request.GET,queryset = LeasePayment.objects.filter(payment_date__range = [start_date,end_date])) –