Python 在模板中将日期转换为字符串

Python 在模板中将日期转换为字符串,python,regex,django,Python,Regex,Django,我想在模板中将数据转换为字符串(以简化url) 为此,我做了以下工作: My URL.py: url(r'^export/range/csv/(?P<start_date>\d+)/(?P<end_date>\d+)/$', views.export_payment_range_csv, name="export_payment_range_csv"), url(r'^export/range/csv/(?P\d+)/(?P\d+)/$),views.export\u

我想在模板中将数据转换为字符串(以简化url) 为此,我做了以下工作:

My URL.py:

url(r'^export/range/csv/(?P<start_date>\d+)/(?P<end_date>\d+)/$', views.export_payment_range_csv, name="export_payment_range_csv"),
url(r'^export/range/csv/(?P\d+)/(?P\d+)/$),views.export\u payment\u range\u csv,name=“export\u payment\u range\u csv”),
模板中的我的链接:

  <li><a href="{% url 'export_payment_range_csv'
  start_date=start_date.string  end_date=end_date.string %}">CSV for
  current range payments</a>
{% url 'export_payment_range_csv' start_date=start_date|date:"Y-m-d" end_date=end_date|date:"Y-m-d" %}
  • 在模板端,开始日期和结束日期的格式为日期,而不是字符串

    但是

    NoReverseMatch at/payment/list/range/Reverse for 带有参数“()”和关键字参数的“导出付款范围”csv 未找到“{u'start\u date':'',u'end\u date':''}”。尝试了2种模式: ['condition/export/range/csv/(?P\d+)/(?P\d+)/$”, '付款/导出/范围/csv/(?P\d+)/(?P\d+)/$']

    我做错了什么

    更新:

    当我不在模板端进行转换时,我会得到以下错误:

    NoReverseMatch at/payment/list/range/Reverse for 带有参数“()”和关键字参数的“导出付款范围”csv “{u'start_date':datetime.date(2016年2月1日),u'end_date': datetime.date(2016年12月31日)}未找到。尝试了2种模式: ['condition/export/range/csv/(?P\d+)/(?P\d+)/$”, '付款/导出/范围/csv/(?P\d+)/(?P\d+)/$']


    因为
    \d
    是一个数字,而您试图返回的类型不是偶数 差不多

    假设日期实际上是日期,您可以执行以下操作:

    start_date=start_date.strftime('%Y-%m-%d')
    
    这将为您提供类似于
    2010-08-14

    这种形式的日期的正则表达式应该是
    \d{4}-\d{2}-\d{2}
    (虽然从技术上讲,这并不能验证日期)。

    因为
    \d
    是一个数字,而您试图返回的类型不是偶数 差不多

    假设日期实际上是日期,您可以执行以下操作:

    start_date=start_date.strftime('%Y-%m-%d')
    
    这将为您提供类似于
    2010-08-14

    这种形式的日期的正则表达式是
    \d{4}-\d{2}-\d{2}
    (虽然从技术上讲,这并不能验证日期)。

    首先,我会将URL中的正则表达式更新为以下内容:

    r'^export/range/csv/(?P<start_date>[-\d]+)/(?P<end_date>[-\d]+)/$
    

    这将创建格式为YYYY-MM-DD的日期字符串。请参阅。

    首先,我将把URL中的正则表达式更新为以下内容:

    r'^export/range/csv/(?P<start_date>[-\d]+)/(?P<end_date>[-\d]+)/$
    

    这将创建格式为YYYY-MM-DD的日期字符串。请参阅。

    我在正则表达式中将日期移动到字符串

      url(r'^export/range/csv/(?P<start_date>\S+)/(?P<end_date>\S+)/$', views.export_payment_range_csv, name="export_payment_range_csv"),
    
    url(r'^export/range/csv/(?P\S+)/(?P\S+)/$),views.export\u payment\u range\u csv,name=“export\u payment\u range\u csv”),
    
    并按模板中的日期格式发送

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

  • 它可以工作

    我在正则表达式中将日期移动到字符串

      url(r'^export/range/csv/(?P<start_date>\S+)/(?P<end_date>\S+)/$', views.export_payment_range_csv, name="export_payment_range_csv"),
    
    url(r'^export/range/csv/(?P\S+)/(?P\S+)/$),views.export\u payment\u range\u csv,name=“export\u payment\u range\u csv”),
    
    并按模板中的日期格式发送

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

  • 它起作用了

    是什么让你认为在datetimes上,
    .string
    是一件有效的事情?请注意,即使您修复了这个问题,字符串化日期仍然与
    \d+
    正则表达式不匹配。谢谢。那么我的出路是什么?我应该处理URLS.Py或……中的正则表达式?我会考虑使用UNIX时间戳,因为它们很容易解析。当然,您也可以选择日期时间格式并坚持使用它。是什么让你认为
    .string
    在datetimes上是一件有效的事情?请注意,即使您修复了这个问题,字符串化日期仍然与
    \d+
    正则表达式不匹配。谢谢。那么我的出路是什么?我应该处理URLS.Py或……中的正则表达式?我会考虑使用UNIX时间戳,因为它们很容易解析。当然,您也可以选择日期时间格式并坚持使用它。