что означает этот URL в Django - PullRequest
2 голосов
/ 18 февраля 2011

это мой код:

(r'^q/(?P<terminal_id>[^/]+)/(?P<cmd_type>[^/]+)/?$', 'send_query_cmd'),

вид:

def send_query_cmd(request, terminal_id, cmd_type):

Что о ?p значит.

Я не знаю, что означает этот URL,

спасибо

Ответы [ 2 ]

5 голосов
/ 18 февраля 2011

(?P<id>REGEXP) - это синтаксис для регулярного выражения Python с именем захвата группы.http://docs.python.org/library/re.html - >> прокрутите вниз до (?P...

Что означает параметр P ..?питон?Происхождение звучит весело.

В любом случае, эти же регулярные выражения используются для определения URL-адресов django для сопоставления URL-адреса с представлением, наряду с захватом именованных групп в качестве аргументов вашей функции представления.http://docs.djangoproject.com/en/dev/topics/http/urls/#captured-parameters

Простейший пример:

(r'^view/(?P<post_number>\d+)/$', 'foofunc'),

# we're capturing a very simple regular expression \d+ (any digits) as post_number 
# to be passed on to foofunc

def foofunc(request, post_number):
    print post_number

# visiting /view/3 would print 3. 
0 голосов
/ 18 февраля 2011

Это происходит из Python синтаксис регулярного выражения .Синтаксис (? P ...) является именованной группой.Это означает, что сопоставленный текст доступен с использованием заданного имени или с использованием Django в качестве именованного параметра в вашей функции просмотра.Если вы используете квадратные скобки с символом? P, то это неназванная группа, которая доступна с использованием целого числа, которое является порядком, в котором эта группа была захвачена.

Ваше регулярное выражение URL означает следующее ...

^ - match the start of the string
q/ - match a q followed by a slash
(?P<terminal_id>[^/]+) - match at least one character that isn't a slash, give it the name terminal_id
/ - match a slash
(?P<cmd_type>[^/]+) - match at least one character that isn't a slash, give it the name cmd_type
/? - optionality match a slash
$ - match the end of the string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...