/register/ 处出现 MultiValueDictKeyError 并且有模型错误

问题描述 投票:0回答:1

“我正在尝试使用 POST 方法检索详细信息,但遇到方法名称错误。我已在下面附加了我的代码,所以请帮我解决它。” 并且也无法在数据库中获取任何信息

Internal Server Error: /register/
Traceback (most recent call last):
  File "J:\good\test\Lib\site-packages\django\utils\datastructures.py", line 84, in __getitem__
    list_ = super().__getitem__(key)
            ^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "J:\good\test\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "J:\good\test\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "J:\good\mainone\threeapp\views.py", line 22, in register
    name=request.POST['name']
         ~~~~~~~~~~~~^^^^^^^^
  File "J:\good\test\Lib\site-packages\django\utils\datastructures.py", line 86, in __getitem__
    raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'name'

模型.py name model也发现错误

from django.db import models
# Create your models here.
class user(models.Model):
    name = models.CharField(max_length=30)
    Email= models.EmailField(max_length=254)
    phone= models.IntegerField()
    account = models.CharField(max_length=10)
    message = models.CharField(max_length=300)

同时注册函数中出现MultiValueDictKeyError。

views.py

from django.shortcuts import render,redirect
from django.contrib.auth.models import User
# Create your views here.
def index(request):
    return render(request,"index.html")
def contact(request):
    return render(request,"contact.html")

def ideagained(request):
    return render(request,"idea_gained.html")

def idea(request):
    return render(request,"idea.html")

def ouridea(request):
    return render(request,"our_idea.html")

def aboutpage(request):
    return render(request,"aboutpage.html")

def register(request):
    name=request.POST['name']
    email=request.POST['email']
    phone=request.POST['phone_number']
    account=request.POST['account']
    message=request.POST['message']
    user=user.objects.create_useryou(name=name, email=email, phone_number=phone, account=account, message=message)
    print("we wil call back you")
    return redirect('/')
 

html 文件

 <form action="{% url "register" %}" method="post">
                {% csrf_token %}
                <h3>my information</h3>
                <h4>Contact us today, and get reply with in 24 hours!</h4>
                <style>
                  fieldset {
                    border: medium none !important;
                    text-emphasis-color:black;
                    margin: 0 0 10px;
                    min-width: 100%;
                    padding: 0;
                    width: 100%;F
                    }
                </style>
                <fieldset>
                  <input placeholder="Your_name" type="text" tabindex="1" style="background-color:black;"  required autofocus>
                </fieldset><br>
                <fieldset>
                  <input placeholder="Your Email Address" type="email" tabindex="2" style="background-color:black;" required>
                </fieldset><br>
                <fieldset>
                  <input placeholder="Your Phone Number" type="tel" tabindex="3" style="background-color:black;" required>
                </fieldset><br>
                <fieldset>
                  <label for="cars">Choose a account:</label>
                    <select name="account" id="name">
                    <option value="netflix">netflix</option>
                    <option value="amazone prime">amazone</option>
                    <option value="disney plus hotstar">hotstar</option>
                    </select>
                    <style>
                    #nname {
                      padding: 5px;
                      color: #f7f7f8;
                      font-size: 12px;
                      background: black;
                      appearance: none;
                  
                  }
                </style>
                </fieldset><br>
                <fieldset>
                  <textarea placeholder="Type your Message Here...." tabindex="5" style="background-color:black;" required></textarea>
                </fieldset><br>
                <fieldset>
                  <button name="submit" type="submit" id="contact-submit" style="background-color:rgb(23, 12, 12);" data-submit="...Sending" value="submit">Submit</button>
                </fieldset><br>
              </form>  
django django-models django-rest-framework django-views django-forms
1个回答
0
投票

您需要为 html 输入标签提供一个

name
属性。您将使用它的值在视图中访问它。

<input placeholder="Your_name" name="name"... >
<input placeholder="Your Email Address" name="email"... >
<input placeholder="Your Phone Number" name="phone_number"... >
<textarea placeholder="Type your Message Here...." name="message"... ></textarea>
© www.soinside.com 2019 - 2024. All rights reserved.