**kwargs 在 django 中总是给出 none

**kwargs always giving none in django

在我看来,我正在重定向为:

return redirect('camera_login', success='False' )

在我的 urls.py 中:

    url(r'^', CameraLoginView.as_view(), 
        name = "camera_login"),
    url(r'^(?P<success>[a-zA-Z0-9-]+)/$', CameraLoginView.as_view(), 
        name = "camera_login"),

现在我可以在我的浏览器中看到 url 被重定向到 localhost:8000/False,并且 camera_login.html 页面已呈现,但是当我调试代码时,我的 **kwargs 总是 none.

class CameraLoginView(View):

def get(self, request, *args, **kwargs):
    print('kwargs' , self.kwargs)
    success = None
    print('args ', args)
    return render( request,
        'camera_login.html', {'success': success})

在终端kwargs {}中,kwargs 总是空的?我不知道我哪里错了。谢谢。

您的第一个模式匹配所有内容,因此永远不会达到您的第二个模式。由于第一个模式没有捕获组,因此不会捕获任何 kwargs。

你应该确保你总是终止你的模式:

url(r'^$', CameraLoginView.as_view(), name = "camera_login"),
url(r'^(?P<success>[a-zA-Z0-9-]+)/$', ...)