0

我是 django 的新手,正在玩 url 并且遇到了这个问题,我在我的views.py哪个反向 url 中有一个视图到不同的视图

def index(request):
  username = request.session.get('username')
  if username is None:
    return HttpResponseRedirect(reverse('login_page'))
    #return HttpResponse("Testing view session not found")
  else:
    return HttpResponseRedirect(reverse('profile_page', kwargs = {'username': username,}))
    #return HttpResponse("Testing view " + username)

现在当代码到达else阻塞时,因为username不是None,所以这是我的 URLconf

urlpatterns = patterns('',
    url(r'(?P<username>^)', views.profile, name = "profile_page"),)

因此,简单来说,我正在调用profile_page使用命名参数用户名的 url,并且我从 传递相同的内容kwargs,但我得到NoReverseMatch了异常消息:

没有找到带有参数“()”和关键字参数“{'username': 'dheerendra'}”的“profile_page”的反向操作。尝试了 1 种模式:['user/(?P^)']

4

2 回答 2

0

要构建一个profile_pageURL,它需要一个username完整的填写。你打电话reverse('profile_page')时没有在 kwargs 中传递用户名。

于 2014-07-17T16:57:04.623 回答
0

两件事情:

  • 您已经为 url 提供了一个命名组username,但实际上并没有为命名组提供正则表达式。您希望您的username正则表达式匹配不同长度的用户名,因此您需要:

    url(r'?P<username>\w+)/$', views.profile, name="profile_page"),

    \w+正则表达式在哪里

  • 其次,正如您将在上面的示例中看到的那样,您需要用 a 终止正则表达式,$以便诸如此类的 url/myusername/otherstring/不会被错误地匹配

于 2014-07-17T18:52:42.743 回答