我有一个问题,我似乎无法弄明白。在Django工作试图获得URL匹配的hanlde。我有一个有效。一个没有,我无法弄清楚为什么。希望有人可以提供帮助。
url(r'^person/device/program/oneday/(?P<meter_id>\d+)/$',
therm_control.Get_One_Day_Of_Current_Device_Schedule.as_view(),
name="one-day-url"),
当我使用这个网址时:
http://127.0.0.1:8000/personview/person/device/program/oneday/149778/
url(r'^person/device/program/oneday/(?P<meter_id>\d+)/(?P<day_of_the_week>\s+)/$',
therm_control.Get_One_Day_Of_Current_Thermostat_Schedule.as_view(),
name="one-day-url"),
当我使用这个网址时:
http://127.0.0.1:8000/personview/person/device/program/oneday/149778/Monday/
他们认为两种情况都是一样的。为了尝试第二次,我将day_of_the_week添加到def get()
我在调试中看到的是404:
Request Method: GET
Request URL: http://127.0.0.1:8000/personview/person/device/program/oneday/149778/Monday/
我在URLconf列表中看到了这一点,所以我知道它在conf:
中^personview/ ^person/device/program/oneday/(?P<meter_id>\d+)/(?P<day_of_the_week>\s+)/$ [name='one-day-url']
非常感谢任何帮助。
答案 0 :(得分:3)
问题是\s
表示正则表达式中的空白字符,因此在您的URLconf中,星期几必须是一系列空格字符。如果您将\s
替换为\w
,则会查找单词字符,这就是您想要的。
答案 1 :(得分:1)
\ s +将匹配一个或多个空格,您需要\ w +:
url(r'^person/device/program/oneday/(?P<meter_id>\d+)/(?P<day_of_the_week>\w+)/$',
therm_control.Get_One_Day_Of_Current_Thermostat_Schedule.as_view(),
name="one-day-url"),