2016-12-28 7 views
0

テンプレートで日付を文字列に変換する:私は次のようにします(URLを簡略化するために)テンプレートで文字列にこのため をデータを変換したい

マイURLs.py:中

url(r'^export/range/csv/(?P<start_date>\d+)/(?P<end_date>\d+)/$', views.export_payment_range_csv, name="export_payment_range_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> 

テンプレート側start_dateとend_dateは、日付の形式であり、文字列ではありません。

けど/支払/リスト/範囲で

NoReverseMatchを取得/ ')(' 引数付き 'export_payment_range_csv' とキーワード引数のためのリバース '{u'start_dateを': ''、u'end_dateを': ''}' 見つかりません。 2つのパターンが試されました: [条件/ export/range/csv /(?P \ d +)/(?P \ d +)/ $ '、 ' payment/export/range/csv/)/(ΔP\ d +)/ $ ']

どうしたのですか?

UPDATE:私はテンプレート側のエラーで変換をしないときは

私は取得しています:

NoReverseMatch「を支払い/リスト/レンジ/引数付き 'export_payment_range_csv' のリバース/時( ) 'およびキーワード引数 ' {u'start_date ':datetime.date(2016,2,1)、u'end_date': datetime.date(2016,12,31)} 'が見つかりません。 2つのパターンが試されました: [条件/ export/range/csv /(?P \ d +)/(?P \ d +)/ $ '、 ' payment/export/range/csv/)/(?P \ D +)/ $ ']

+0

を働く私の正規表現

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

と送信に日付を文字列に移動datetimesで行うべき有効なことでしたか?また、それを修正したとしても、文字列化された日付は '\ d +'正規表現と一致しません。 –

+0

ありがとうございます。だから私の脱出は何ですか?私はurls.pyでの正規表現や...で作業する必要がありますか? –

+0

UNIXのタイムスタンプは簡単に解析できるので、これを使うことを考えます。もちろん、日時フォーマットを選択してそれに固執することもできます。 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior – 2rs2ts

答えて

1

\dは数字で、あなたが返すようにしようとしているタイプが近いとさえ ではありませんので。

日付が実際日付があると仮定すると、あなたはこれを行うことができます:あなたは2010-08-14ような何かを与える

start_date=start_date.strftime('%Y-%m-%d') 

を。 その形式の日付の正規表現は\d{4}-\d{2}-\d{2}(ただし、技術的に日付を検証していません)です。

1

まず、私は次のようにあなたのURLで正規表現を更新します:

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

templatesystemで(あなたがあなた自身のtemplatefilterを作成していない限り)あなたが使用することができ-method .stringありません。したがって、日付オブジェクトを文字列に変換するには、Djangoのbuildinテンプレートフィルタ.dateを使用することができます。これを行うには、テンプレート内のURLを生成するために、次の使用:これは形式YYYY-MM-DDの日付文字列を作成します

{% url 'export_payment_range_csv' start_date=start_date|date:"Y-m-d" end_date=end_date|date:"Y-m-d" %} 

Django's date-docs hereを参照してください。

0

私はそれがテンプレート

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

から日付の形式であるとしてそれはあなたが `.string`ことを考えさせ何

関連する問題