Django:reverse()找不到带有args / kwargs的视图

时间:2017-08-03 15:50:24

标签: python django

有一些与我的问题相关的帖子。但是,似乎没有解决以下问题:

我在myapp / urls.py中定义了网址:

app_name = "myapp"
urlpatterns=[
    url(r'^$', views.index, name="index"),
    url(r'^adduser/$', views.addUser, name="adduser"),
    ]

以及myapp / views.py中的相应视图:

def index(request, status_msg=None, error_msg=None):
    return HttpResponse(render(request, "myapp/index.html", 
                               context={"error_message":error_msg, "status_message":status_msg})) 

def addUser(request):
    try:
        uname=request.POST["user_name"]
    except KeyError:
        url = reverse("myapp:index", args=(None, "No user name specified."))
        return HttpResponseRedirect(url)
    # ... adding user to db ...
    url = reverse("myapp:index", args=("Added user '%s'"%uname,))
    return HttpResponseRedirect(url)

从addUser()中的重定向向index()传递参数的变体都会产生类型的错误

Reverse for 'index' with arguments '(None, u'No user name specified.')' not found. 1 pattern(s) tried: [u'myapp/$']

我不知道我在这里做错了什么。似乎找到了索引视图但未被识别为允许除请求之外的任何参数?

使用kwargs而不是args也无济于事。

任何建议都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:1)

您的网址似乎不支持参数(即正则表达式中捕获的组)。因此你应该只使用:

reverse("myapp:index")

查看reverse()函数here的文档。