这是我的网址:
url(r'^add/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<day>[0-9]+)/(?P<id>[0-9]*)$', views.AddWorkoutView.as_view(), name = 'add_workout'),
用于向数据库添加锻炼。如果提供了id,服务器应该:
在我的一个名为 addworkout.html 的模板中,我有一个表格,其中插入了锻炼数据。它有以下开头标记:
<form id="workoutform" action="{% url 'workoutcal:add_workout' date.year date.month date.day %}" method="post">
如你所见,我还没有在反向网址中提供任何id参数。这是因为在 addworkout.html 中,用户只能添加新的锻炼,因此不需要现有的锻炼ID。但是,这种反转url的尝试会产生错误:
NoReverseMatch at /workoutcal/add/2018/1/2/
Reverse for 'add_workout' with arguments '(2018, 1, 2)' not found. 1 pattern(s) tried: ['workoutcal/add/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<day>[0-9]+)/(?P<id>[0-9]*)$']
由于我在url中的id号旁边写了一个正则表达式星号,因此不应该提供id的任何要求。我能想到的唯一解释是,最后一个正斜杠是罪魁祸首,也许它在反转网址时没有产生。
如果我的解释是正确的,我如何以最佳方式处理这个尾随斜线问题?