Можно ли сделать позиционный аргумент необязательным в URL в Django - PullRequest
1 голос
/ 02 июля 2011

У меня есть это в файле URL

(r'^new/(?P<object_class>\w+)/(?P<action>\w+)/(?P<object_id>\d+)/$', create_object)

NOw для URL, как /new/book/edit/5, он работает нормально

Но если я сделаю /new/book/create, тогда этоговорит, ни URL не совпадает.

Возможно ли, что третий аргумент является необязательным, чтобы я мог использовать одно правило URL для вышеуказанных случаев

Ответы [ 2 ]

0 голосов
/ 02 июля 2011

Вы можете пометить один из аргументов как необязательный с помощью регулярного выражения char для 0 или 1 знака вопроса). Используя ваш пример, я использовал:

(r'^new/(?P<object_class>\w+)/(?P<action>\w+)(/(?P<object_id>\d+))?/$', create_object)

Важно отметить, что трейлинг / долженвсе еще присутствовать.

0 голосов
/ 02 июля 2011
(r'^new/(?P<object_class>\w+)/(?P<action>\w+)/((?P<object_id>\d+)/)?$', create_object)

Это должно сделать это. (Обратите внимание, что я завернул object_id и / в (..)?, чтобы сделать его необязательным)

Теперь object_id должно быть ни один в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...