【问题标题】:I am getting multivaluedictkeyerror while getting values from the form我在从表单中获取值时收到 multivaluedictkeyerror
【发布时间】:2021-06-25 09:41:46
【问题描述】:

我希望在用户详细信息模型中更新一些详细信息,但是当我尝试从请求中读取值时 它显示 multivaluedictkeyerror

错误图片

views.py

@csrf_exempt
def updateuser(request):
   myuser=request.user
   obj=User.objects.get(id=myuser.id)
   if request.method == 'POST':
      p=request.POST['phone']
      a=request.POST['add']
      e=request.POST['edu']
      em=request.POST['email']
      c=request.POST['country']
      s=request.POST['state']
      userdetails.objects.create(
          user=obj, phone=p, address=a,
          edu=e, country=c, state=s
          )
    return render(request,'profile.html')

html代码

<form action="updateuser" method="POST">
   {% csrf_token %}
   <div class="row mt-3">
    <div class="col-md-12">
      <label class="labels">PhoneNumber</label>
      <input type="tel" class="form-control" placeholder={{uobj1.phone}} name="phone" required>
    </div>
    <div class="col-md-12">
      <label class="labels">Address</label>
      <input type="text" class="form-control" placeholder={{uobj1.address}} name="add" required>
    </div>
    <div class="col-md-12">
      <label class="labels">Email ID</label>
      <input type="email" class="form-control" placeholder={{uobj.email}} name="email" >
    </div>
    <div class="col-md-12">
      <label class="labels">Education</label>
      <input type="text" class="form-control" placeholder={{uobj1.edu}} name="edu" required>
    </div>
   </div>
   <div class="row mt-3">
    <div class="col-md-6">
      <label class="labels">Country</label>
      <input type="text" class="form-control" placeholder={{uobj1.country}} name="country" required>
    </div>
    <div class="col-md-6">
     <label class="labels">State/Region</label>
     <input type="text" class="form-control" value="" placeholder={{uobj1.state}} name="state" required>
    </div>
   </div>
   <div class="mt-5 text-center">
     <button class="btn btn-primary profile-button" type="submit">Save Profile</button>
   </div>
</form>

应用 urls.py

from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('index',views.home,name='index'),
path('profile',views.profile),
path('logdetails',views.checklogin),
path('login',views.ulogin,name='ulogin'),
path('lout',views.lout),
path('regdetails',views.usersave),
path('viewpro',views.viewpro),
path('setbid',views.setbid,name='setbid'),
path('products',views.productlist),
path('updateuser',views.updateuser)
]

我已经添加了 urls.py 文件,但我没有看到任何错误,一切正常,只有更新用户显示错误

【问题讨论】:

  • 我尝试在我的网页中使用管理员帐户,而不是在 django 管理中。如果我使用管理员登录 ID 添加详细信息并通过它可以在我的网页上。但是如果我尝试使用另一个用户的 id pass 在我的网页中添加详细信息,它会显示如下 multivaluedictkeyerror

标签: html django django-views django-templates


【解决方案1】:

&lt;form action="updateuser" method="POST"&gt; 中的操作应该是 URL 模式或名称,例如 action = {% url 'appname : updateuser' %}

【讨论】:

  • 我已经尝试过了,但没有工作它显示 ** NoReverseMatch at /auction/profile Reverse for 'updateuser' not found。 “updateuser”不是有效的视图函数或模式名称。**
【解决方案2】:

当请求的值没有接收到后端时,会发生多值键错误。确保您在 HTML 标记中使用正确的名称,如 request.post['name']。如果不工作尝试使用

request.POST.get('name')

另外,像这样放置表单动作

<form action={% url 'url-name' %}>

【讨论】:

  • 我已经尝试过了,但没有工作 NoReverseMatch at /auction/profile Reverse for 'updateuser' not found. 'updateuser' 不是有效的视图函数或模式名称。
  • 检查您提供了有效的 url 名称和视图名称是否正确。
  • 是的,这是正确的,因为我已经给出了上面的代码
  • @Lakshmanan 请出示你的 urls.py 文件
  • 我已经添加了 urls.py
【解决方案3】:

最后我幸运地得到了答案,这是一个愚蠢的答案,但它对我有用..

只需在占位符之前的输入字段中提供 name 属性即可。

示例: 旧代码

<input type="text" class="form-control" placeholder={{uobj1.country}} name="country" required>

更新代码

<input type="text" class="form-control" name="country" placeholder={{uobj1.country}} required>

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 2021-12-25
    • 1970-01-01
    • 2013-12-28
    • 2014-12-11
    • 2018-08-19
    • 2018-10-03
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多