В Джанго URL. Как мы можем сделать аргумент ссылки необязательным. (\ W +) - PullRequest
0 голосов
/ 05 августа 2011

Я хочу сделать аргументы, которые я передаю через URL, необязательными.

 url(r'^dashboard/forms/(\w+)|/create/$','dashboard_message_create'),
 url(r'^dashboard/forms/(\w+)/delete/$', 'delete'),

Проблема с использованием "|" в том, что django не может различить вышеупомянутые 2 URL. Я новичок в Джанго. Так что любые указатели в этом направлении будут очень полезны. Заранее спасибо

Ответы [ 2 ]

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

Вы можете попробовать связать оба с одним и тем же представлением

url(r'^dashboard/forms/create/$','dashboard_message_create'),
url(r'^dashboard/forms/(\w+)/create/$','dashboard_message_create'),

Затем убедитесь, что dashboard_message_create работает без аргумента

def dashboard_message_create(request, name=None):
    # Body
1 голос
/ 05 августа 2011

Вы можете добиться большего успеха, используя полные повторные суперспособности (ну, почти супер, без предвидения в urlpatterns ...):

url(r'^dashboard/forms/((?P<name>\w+)/)?create/$','dashboard_message_create'),
url(r'^dashboard/forms/(?P<name>\w+)/delete/$', 'delete'),

Добавьте именованные аргументы в ваше представление и игнорируйте безымянные:

def dashboard_message_create(request, name, *args, **kwargs):
    pass

Аргумент name будет None, когда токен ((?P<name>\w+)/)? соответствует пустой строке.

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