2013-09-04 2 views
1

У меня есть метод просмотра с двумя дополнительными параметрами:Как передать именованные аргументы методу представления Django?

def foo(request, email, token): 
    ... 

И мне нужно использовать reverse для генерации URL:

... 
    url = urlresolvers.reverse(
     'my_app.views.foo', 
     kwargs={ 'token': <token>, 'email': <email> }) 
  1. Каково мое использование reverse разумной/приемлемым, и
  2. Как выглядит шаблон URL для foo?

ответ

0
  1. Да
  2. Это до вас, чтобы написать его в привязок. Вы можете посмотреть на Django docs

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

+0

Да, я начал с документов, но именно поэтому я здесь. Я ищу больше рекомендаций для этого конкретного случая. – Seth

+0

@Seth Ответ отредактирован. Надеюсь, теперь это будет более полезно. – Germano

3

1 - Да, насколько это возможно, но, конечно же, он будет терпеть неудачу без urlpattern. Вы можете использовать либо args, либо kwargs, в зависимости от вашего случая. Здесь вы можете использовать args, так как оба они являются обязательными аргументами из вашей функции просмотра.

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

url(r'^/(?P<email>[-\w]+)/(?P<token>\d{1,2})/$', 'views.foo', name='foo'), 

Именованные URL-адреса являются хорошим образцом для привыкания. Вы также можете передать имя функции обратного:

url = urlresolvers.reverse(
    'foo', 
    args=['<email>', '<token>'] 
+0

Это отличное начало. Именованные аргументы, встроенные в URL-адрес, обычно предпочтительный для параметров строки запроса в Django? – Seth

+0

Я бы сказал, что это дизайнерское решение, основанное на ваших требованиях к сайту. Все, что я скажу, это то, что мне никогда не приходилось использовать querystrings на любом из моих сайтов Django. :-) – professorDante

Смежные вопросы