在我的网址中,我希望获得2个日期作为输入:
url(r'^export/range/csv/(?P<start_date>\d+)/(?P<end_date>\d+)/$', views.export_payment_range_csv, name="export_payment_range_csv"),
但我收到错误:
NoReverseMatch at / payment / list / range / Reverse for 带有参数'()'和关键字参数的'export_payment_range_csv' '{u'start_date':datetime.date(2016,2,1),u'end_date': datetime.date(2016,12,31)}'找不到。尝试了2种模式: [ '条件/出口/范围/ CSV /(ΔP\ d +)/(ΔP\ d +)/ $', '付款/出口/范围/ CSV /(ΔP\ d +)/(ΔP\ d +)/ $']
我认为这与我的URL文件中的正则表达式有关。 我做错了什么?
更新: 我访问的网址
<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]))
答案 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),
})