2014-10-23 2 views
0

У меня есть этот тег <a href = '/mysite/goto_home/Yax/'>Yax</a>Джанго HttpResponseRedirect (реверс ('URL')) Возвращает NoReverseMatch Error

Я хочу, если пользователь нажимает на нее, он/она должен быть перенаправлен на этот URL:

url(r'^user/(?P<user_id>\d+)/(?P<user_name>[-\w]+)/$', views.user_profile, name='user_profile') 

Но это дает мне NoReverseMatch at /mysite/goto_home/Yax/ Reverse for 'user_profile' with arguments '()' and keyword arguments '{'user_id': 2, 'user_name': u'Mokwa'}' not found. 1 pattern(s) tried: [u'mysite/user/(?P<user_id>\\d+)/(?P<user_name>[-\\w]+)/$']

views.py:

def profile(request, user_name): 
    try: 
     user = Users.objects.get(username = user_name) 
    except Users.DoesNotExist: 
     user = none 
     if user is not None: 
      return HttpResponseRedirect(reverse('mysite:user_profile', kwargs={'user_id': int(user.id), 'user_name':user.name})) 

def user_profile(request, user_id, user_name): 
    pass 

Как я могу это решить?

+0

Можете ли вы показать метод 'get_absolute_url' вашей модели и как вы указали URL-адрес в своем шаблоне? Ссылка, которую вы указали, - это «HTML», которая может быть результатом, который вы создали, но это не то, с чем имеет дело интерпретатор Python. –

+0

Почему вы это делаете, а не просто отправляете их прямо в представление через собственный URL-адрес в теге 'a'? – Ngenator

ответ

0

Вы использовали "mysite:user_profile" для обратного вызова, но URL-адрес не находится в пространстве имен. Вы должны либо использовать только "user_profile", либо задать пространство имен для URL-адресов, завернутых при вызове include.

Пространства имен объясняются более подробно здесь. https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces

+0

Пожалуйста, я не понимаю вашего ответа. Я попробовал 'return HttpResponseRedirect (reverse ('user_profile', kwargs = {'user_id': int (user.id), 'user_name': user.name}))' и я все равно получаю ту же ошибку. – Yax

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