Django '()' bağımsız değişkenleriyle ve '{}' anahtar kelime bağımsız değişkenleriyle geriye doğru bulunamadı


144

Merhaba, sinir bozucu bir sorunum var.

Ben böyle bir url desen var:

# mproject/myapp.urls.py

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

tarayıcıda iyi çalışıyor ama test için, bunu kabukta yaptığımda:

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

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

Ben korkunç olsun:

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

Burada ne eksik?


en son django'da , ters URL'lerden alınır. iefrom django.urls import reverse
suhailvs

Yanıtlar:



6

@ Miki725 çözümü kesinlikle doğrudur. Alternatif olarak, argsözniteliği aksine kullanmak kwargsisterseniz, kodunuzu aşağıdaki gibi basitçe değiştirebilirsiniz:

project_id = 4
reverse('edit_project', args=(project_id,))

Bunun bir örneği belgelerde bulunabilir . Bu aslında aynı şeyi yapar, ancak nitelikler argüman olarak iletilir. Aktarılan tüm argümanlara geri döndürülmeden önce bir değer atanması gerektiğini unutmayın. Bu durumda doğru ad alanını kullanın 'edit_project'.


1
Onun özlüğünü seviyorum.
Bartleby

2

Ben aktivasyon bağlantısı oluşturmak ve tabii e-posta yoluyla göndermek için ters kullanmaya çalıştığınızda bu sorunlar bana büyük baş ağrısı verdi. Bu yüzden tests.py'dan aynı olacağını düşünüyorum. Bunu yapmanın doğru yolu şudur:

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)) 

1
Sadece denedim, işe yaramıyor. @ miki725 kullanıcısının yanıtı doğru.
Daniel van Flymen

1
Bir küme aykırı yanlış yerde olduğuna inanıyorum: response = client.get (reverse ('edit_project', project_id = 4))
Wim Feijen

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.