django 奇怪的 url 反应

Posted

技术标签:

【中文标题】django 奇怪的 url 反应【英文标题】:django weird url reaction 【发布时间】:2013-04-04 12:41:03 【问题描述】:

我有这个奇怪的 url 反应。

这是我的观点.py

def user_edit(request):
  user = User.objects.get(id=request.GET.get('userid'))
  return render_to_response("editprofile.html",'user':user,context_instance=RequestContext(request))

这是我的表格。

<form action="/update_userprofile/?userid=user.id" ...

我的 urls.py

url(r'^update_userprofile/','home.views.update_userprofile')   

但是一旦我发送表格,我就会收到错误:

 Internal Server Error: /update_userprofile/on

on 来自哪里?我不明白这里发生了什么。

非常感谢。

【问题讨论】:

这是主要的 urlconf,@catherine 我实际上正在使用用户 ID 获得正确的用户,但在后台我收到 500 错误,上面说同样的错误。 @凯瑟琳 我必须逃避吗?在 uri 中? @凯瑟琳 您可以尝试在 settings.py 中将 Debug 设置为 True 吗? @catherine,我两个都用。因为我在帖子中有一些数据,并且在 get 中有用户 ID。是不是这个原因?? 【参考方案1】:

好的,我试试你的代码。您没有提出您使用什么方法的问题。所以我尝试了 GET 和输出 User matching query does not exist。我尝试了 POST,它现在可以工作了。

<form action="/update_userprofile/?userid=user.id" method="POST">

即使您在 url 中定义了 user id,您仍然可以从方法 POST 中获取值。

更新:

你的代码很好,只需在你的表单中将方法更改为method=POST

【讨论】:

哦,所以我可以通过这种方式获取用户 ID:userid = request.POST.get('userid') ? 不,您的原始代码很好userid = request.GET.get('userid'),只需将表单中的方法更改为POST 去掉 GET,只使用 POST 另外,您发布的网址应该更改,此处使用查询字符串不是最佳做法。如果您需要将用户 ID 发送到服务器,请将其包含在隐藏字段中。 "如果您需要将用户 ID 发送到服务器,请将其包含在隐藏字段中" => 或将其作为 url 的一部分...

以上是关于django 奇怪的 url 反应的主要内容,如果未能解决你的问题,请参考以下文章

不允许使用 Django 奇怪的方法

Listview对点击的奇怪反应

反应上下文奇怪的数据类型错误

反应钩子useState()的真正奇怪的行为

子弹物理质心和奇怪的物体反应

奇怪的反应编译器行为