При попытке протестировать модель get_absolute_url () я получаю следующее исключение. account в данном случае является именем приложения. Я просто пытаюсь проверить путь, который является результатом вызова этой функции:
Здесь используется Django v1.9.
django.core.urlresolvers.NoReverseMatch: Reverse for 'profile' with
arguments '()' and keyword arguments '{'username': 'test_user'}' not
found. 1 pattern(s) tried: ['accounts/profile/<username>/']
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
birth = models.DateField()
bio = models.TextField()
avatar = models.ImageField(upload_to=image_file_path)
def get_absolute_url(self):
profile_user = self.user.username
return reverse('accounts:profile', kwargs={'username': profile_user})
class UserProfileMethods(TestCase):
def setUp(self):
self.test_user = User.objects.create_user('test_user')
self.image = open(join(dirname(__file__), 'images/test_image.jpg'), 'rb')
self.profile_data = {
'user' : self.test_user,
'birth': '2019-01-01',
'bio': 'Hello World!',
'avatar': SimpleUploadedFile(
self.image.name,
self.image.read(),
content_type="image/jpeg"
)
}
self.profile = Profile.objects.create(**self.profile_data)
self.profile_url = self.profile.get_absolute_url()
def test_profile_url(self):
self.assertEqual(self.profile_url, 'profile/test_user')
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'sign_in/$', views.sign_in, name='sign_in'),
url(r'sign_up/$', views.sign_up, name='sign_up'),
url(r'sign_out/$', views.sign_out, name='sign_out'),
url(r'profile/<username>/$', views.profile, name='profile')
]