django ajax django .utils.datastructures.MultiValueDictKeyError - PullRequest
0 голосов
/ 05 января 2020

Я нашел образец ajax для грубых операций.

Вот оригинальный проект

Я добавил поле 'city' в мой модал и получил ошибку

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('/')

models.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

index. 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 %}

Извините, но мой Engli sh не в порядке

1 Ответ

0 голосов
/ 05 января 2020

Вы не указали город в данных

     lastname: $city,// i added here

должно быть

     city: $city,// i added here
...