Django HttpResponseRedirect(反向(' url'))返回NoReverseMatch错误

时间:2014-10-23 12:46:21

标签: python django django-views

我有这个标签<a href = '/mysite/goto_home/Yax/'>Yax</a>

我想如果用户点击它,他/她应该被重定向到 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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您使用"mysite:user_profile"进行反向调用,但该URL不在命名空间中。您应该只使用"user_profile"或为include调用中包含的网址设置名称空间。

此处更详细地解释了命名空间。 https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces