Django URL Pattern Pattern Matching Question - PullRequest
0 голосов
/ 23 августа 2011

У меня есть проблема, которую я не могу решить.Работая в Django, пытаюсь получить информацию об URL-адресе.У меня есть тот, который работает.Тот, который не делает, и я не могу понять, почему.Надеясь, что кто-то может помочь.

Тот, который работает:

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"),

Когда я использую этот 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"),

Когда я использую этот 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, так что я знаю этов конф:

^personview/ ^person/device/program/oneday/(?P<meter_id>\d+)/(?P<day_of_the_week>\s+)/$ [name='one-day-url'] 

Любая помощь с благодарностью.

Ответы [ 2 ]

3 голосов
/ 23 августа 2011

Проблема в том, что \s означает символ пробела в регулярном выражении, поэтому в вашем URLconf день недели должен быть последовательностью символов пробела.Если вы замените \s на \w, вместо этого он будет искать слова, что вам и нужно.

1 голос
/ 23 августа 2011

\ 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"),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...