2013-03-25 4 views
0

Моя цель - передать 2 аргумента из моего пространства имен в мои другие представления.Django URL Regex Capture Int

<li><a href ="{% url world:p p.id 1 %}">{{p.description}} 

Прошу прощения, если это не имеет смысла. Я изо всех сил стараюсь найти правильные слова, чтобы описать мою проблему.

Аргумент, я пытаюсь перейти к delpic-функции внутри views.py - это идентификатор изображения и целое число, но inorder для него работает, он должен передать регулярное выражение, а затем он будет отправлен на мои view.py ,

def delpic(request,picture_id,digit): 

    digit = digit 
    If digit == "1": 
       #Something 
    If digit == "2": 
       # Something 
    return render(request,'boardeditor.html',{'board':BoardNameForm(request.user),}) 

но когда я пытаюсь передать оба в свои взгляды. Я получаю эту ошибку

TypeError at /delpic/3/1/ 

    delpic() takes exactly 3 non-keyword arguments (2 given) 

Я думаю, что это мое регулярное выражение, casuing проблему

url(
     r'^delpic/(?P<picture_id>\d+)/(\d{1})/$', 
     'pet.views.delpic', 
     name= 'delpic', 
    ), 

Мой Главный URL CONF

url(
    r'^', 
    include('pet.urls', 
     namespace = 'world') 
), 
+0

Вы не зарегистрировали свой адрес с пространством имен: https://docs.djangoproject.com/en/dev/topics/http/urls/ # reverseing-namespaced-urls –

+0

только боковое примечание, ваша функция delpic возвращает что-то, прежде чем обрабатывать цифровую переменную, не думайте, что это ваше намерение ... – Jingo

+0

Почему вы просто не копируете regexp 'picture_id' и не добавляете его при переименовании? –

ответ

8

Вы используете регулярное выражение неправильно.

Вид ожидает именованное регулярное выражение, и вы его не называете. Взгляд не понимает, что происходит.

Правильное регулярное выражение для зрения заключается в следующем:

r'^delpic/(?P<picture_id>\d+)/(?P<digit>\d+)/$'