繁体   English   中英

django ajax django.utils.datastructures.MultiValueDictKeyError

[英]django ajax django.utils.datastructures.MultiValueDictKeyError

我找到了一个用于 crud 操作的 ajax 示例。

这是原始项目

我在模态中添加了“城市”字段,但出现错误

Traceback (most recent call last):
  File "C:\Users\Atilgan\AppData\Local\Continuum\anaconda3\lib\site-packages\django\utils\datastructures.py", line 76, in __getitem__
    list_ = super().__getitem__(key)
KeyError: 'city'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Atilgan\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Atilgan\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Atilgan\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Atilgan\Desktop\Depo\jquery\crud\views.py", line 10, in create
    member = Member(firstname=request.POST['firstname'], lastname=request.POST['lastname'], city=request.POST['city'])
  File "C:\Users\Atilgan\AppData\Local\Continuum\anaconda3\lib\site-packages\django\utils\datastructures.py", line 78, in __getitem__
    raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'city'

这是代码:

创建脚本

$('#create').on('click', function(){
        $firstname = $('#firstname').val();
        $lastname = $('#lastname').val();
        $city = $('#city').val();// i added here

        if($firstname == "" || $lastname == ""){
            alert("Please complete the required field");
        }else{
            $.ajax({
                url: 'create',
                type: 'POST',
                data: {
                    firstname: $firstname,
                    lastname: $lastname,
                    lastname: $city, // I added here
                    csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
                },
                success: function(){
                    Read();
                    $('#firstname').val('');
                    $('#lastname').val('');
                    $('#city').val('');  // I added here
                }
            });
        }
    });

视图创建

def create(request):
    member = Member(firstname=request.POST['firstname'], lastname=request.POST['lastname'], city=request.POST['city'])   // I added here city=request.POST['city']
    member.save()
    return redirect('/')

模型.py

class Member(models.Model):
    firstname = models.CharField(max_length=40)
    lastname = models.CharField(max_length=40)
    city= models.CharField(max_length=40)     // I added here

    def __str__(self):
        return self.firstname + " " + self.lastname + " " + self.city    // I added here

索引.html

{% extends 'crud/base.html' %}
{% block body %}
<form class="form-inline">
    {% csrf_token %}
    <div class="form-group">
        <label>Firstname</label>
        <input type="text" id="firstname" class="form-control" style="width:20%;" required="required"/>
        <label>Lastname</label>
        <input type="text" id="lastname" class="form-control" style="width:20%;" required="required"/>
        <label>City</label>      // I added here
        <input type="text" id="city" class="form-control" style="width:20%;" required="required"/>
        <button type="button" id="create" class="btn btn-sm btn-primary">Create</button>
    </div>
</form>
<br />
<div id="result">
</div>
{% endblock %}

很抱歉,但我的英语不好

你还没有将城市放入数据中

     lastname: $city,// i added here

应该

     city: $city,// i added here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM