将日期传递给Url标记Django

时间:2017-08-18 18:50:21

标签: python django

我正在尝试将日期传递给网址标记。这是我的网址正则表达式:

url(r'^fund_details/?startDate=(?P<date_index>\d{2}-\d{2}-\d{4})/?offset(?P<date_offset>\d{2}-\d{2}-\d{4})/

和我的网址标记:

{% url 'fund_monitor:fund_details' start_date offset %}

但是我得到了这个错误

ValueError: invalid literal for int() with base 10: '08-18-2017'

请注意,我的开始日期为'08-18-2017'。我认为这是因为我的正则表达式正在寻找一个数字而不是字符串。但是,我需要数字之间的-。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

实现预期结果的更简洁方法是在查询字符串之前指定URL结构,并在视图函数或类中实现逻辑。实际上,您应该具备以下条件:

urls.py(或包含URL绑定的任何文件名):

url(r'^fund_details/$', YourViewClass.as_view(), name="url_alias")

(请注意最后的$符号 - 就我的经验而言,即使您的完整网址最后有一个查询字符串,也应该有效。)

views.py或其他任意命名的文件:

def handle_request(request):
    start_date = request.GET["start_date"]
    date_offset = request.GET["date_offset"]

    # Do your own validation with the acquired input
    # Compute the output with the just validated data

使用HTML表单轻松(或更确切地说,自动)完成将查询字符串构造为?startDate=01-01-2017&offset=01-01-2016