传递参数时django noreversematch错误

时间:2013-06-16 10:10:39

标签: django

当我点击页面/ users / login时,我在/ user / login /收到错误NoReverseMatch。 以下是我的代码的外观

urls.py

  url(r'^$', 'views.homepage', name='home'),
  url(r'^user/login/$', 'coolstuff.views.login_view'),

views.py

def login_view(request):
   if request.method == 'POST':
      username = request.POST['email']
      password = request.POST['password']
      user = authenticate(username=username, password=password)
      if user is not None and user.is_active:
         login(request, user)
         return HttpResponseRedirect(request.GET.get("next"))
      else:
          login_error = "Your username and/or password are incorrect."
          return HttpResponseRedirect(reverse('views.homepage', kwargs={'login_error': login_error}))


def homepage(request, login_error=''):
    return render_to_response(homepage.html,
         {'login_error': login_error,},
         context_instance=RequestContext(request))

所以,我想只在用户键入错误的用户名或密码时传递login_error变量。在任何其他情况下,主页都被调用而没有login_error。 我试图将login_error作为额外的变量传递给视图函数,但在/ user / login /中获取错误NoReverseMatch。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的视图不会在网址格式中采用任何参数,这就是它失败的原因。您需要使用专为此用例设计的messages framework