2015-09-14 4 views
1

Я пытаюсь передать параметр на мой взгляд, но я получаю эту ошибку:Как передать параметры через url в django?

NoReverseMatch at /pay/how 

Reverse for 'pay_summary' with arguments '(False,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['pay/summary/$'] 

/pay/how является текущим видом, что я нахожусь. (это текущий шаблон, возвращаемый этим представлением).

urls.py

url(r'^pay/summary/$', views.pay_summary, name='pay_summary') 

views.py

def pay_summary(req, option): 
    if option: 
     #do something 
    else: 
     #do something else 
    .... 

шаблон

<a href="{% url 'pay_summary' False %}">my link</a> 

EDIT

Я хочу вид ш ould принимает запрос POST, а не GET.

+1

Это не ясно, что вы хотите URL тег, чтобы вернуться. Вы хотите, чтобы 'False' был частью URL-адреса, например. '/ pay/summary/False /' или параметр GET, например. '/ Оплаты/Резюме /? = Значение false'? – Alasdair

+0

https://docs.djangoproject.com/en/1.8/topics/http/urls/ – Gocht

+0

Вам не хватает 2 вещи: 1. Параметр в определении URL, 2. Параметр должен быть целым числом или строкой, но а не python boolean type (потому что url - это строка). –

ответ

3

Вам необходимо определить переменную на URL-адресе. Например:

url(r'^pay/summary/(?P<value>\d+)/$', views.pay_summary, name='pay_summary')), 

В этом случае вы могли бы назвать pay/summary/0

Это может быть строка истина/ложь, заменив \d+ на \s+, но вам нужно будет интерпретировать строку, которая не является лучший.

Вы можете использовать:

<a href="{% url 'pay_summary' value=0 %}">my link</a> 
+0

Тай, который сработал. Кстати, есть ли способ сделать это без отображения/0 в URL-адресе? –

+1

У вас есть три способа передачи аргументов: 1) Как и в ответе, 2) с параметрами GET (pay/summary? Value = 0), с параметрами POST (с использованием форм). Только форма, не отображающая значение в URL-адресе, но не полезная для ссылок. – Dric512

+0

Я думаю, что это должен быть капитал «S», а не строчный регистр для строки – KDEx

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