2012-11-02 11 views
78

Witam mam irytujący problem.Django Reverse z argumentami "()" i argumentami słów kluczowych "{}" nie znaleziono

Mam wzór url tak:

# mproject/myapp.urls.py 

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'), 

to działa dobrze w przeglądarce, ale do testowania, kiedy to zrobić w powłoce:

from django.test import Client 
from django.core.urlresolvers import reverse 

client= Client() 
response = client.get(reverse('edit_project'), project_id=4) 

mam bał:

NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found. 

Czego mi tu brakuje?

Odpowiedz

147

Musisz określić project_id:

reverse('edit_project', kwargs={'project_id':4}) 

Doc here

+0

Świetnie. Dzięki. muszę próbowali każdą konfigurację z wyjątkiem tego jednego! –

+0

mogłeś po prawdopodobnie również to, jak to zrobić w szablonie? –

+1

[docs] (https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#url) mają przykłady – miki725

1

to problemy, dał mi wielką ból głowy, kiedy próbował użyć do generowania reverse link aktywacyjny i wysłać go pocztą elektroniczną oczywiście. Więc myślę, że z tests.py będzie to samo. Prawidłowe sposobem na to jest następująca:

from django.test import Client 
from django.core.urlresolvers import reverse 

#app name - name of the app where the url is defined 
client= Client() 
response = client.get(reverse('app_name:edit_project'), project_id=4) 
+0

Po prostu próbowałem tego, to nie działa. Odpowiedź @ miki725 jest poprawna. –

+1

Wierzę, że nawias jest w niewłaściwym miejscu: response = client.get (reverse ('edit_project', project_id = 4)) –

-2

do „APP_NAME” jest nazw dałeś do konfiguracji adresu URL, a nie rzeczywista nazwa aplikacji.

Prawidłowym sposobem byłoby dodanie dodatkowego parametru do konfiguracji adresu URL - "przestrzeń nazw", to byłby faktyczny "nazwa_aplikacji", o którym użytkownik2517191 został wymieniony, oraz "edit_project" w client.get (reverse ("nazwa_aplikacji: projekt_o edycji")) byłby parametr nazwę nadaną do config url.

Powiązane problemy