【发布时间】:2018-01-11 08:18:05
【问题描述】:
有一些帖子与我的问题有关。但是,似乎没有一个可以解决以下问题:
我在 myapp/urls.py 中定义了 url:
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 也无济于事。
非常感谢任何建议。已经谢谢了!
【问题讨论】:
-
但是索引 URL 不带任何参数。你为什么要通过一些?
-
(即使是这样,“未指定用户名”也不是您在 URL 中传递的那种东西。)
-
我这里好像有些误会。因此,如果不应该被 url 捕获,则不能将 args 或 kwargs 传递给视图?
-
你看,在 addUser() 之后,我想回到索引并显示相应的消息。在执行简单的 HttpResponseRedirect(reverse("myapp:index")) 并在 index() 中添加一些代码以检查这些 POST 值是否存在之前直接编辑请求的 POST 字典是否合理?
-
如果你不希望数据在 URL 中传递,你希望它从哪里来?重定向是对浏览器请求新 URL 的指令。视图的参数仅来自 URL。如果您想在请求之间传递其他信息,请使用会话。