Как добавить данные из javascript в базы данных django

Я новичок в Django Framework. Я сделал шаблон в html с использованием скрипта javascript. Он выглядит как чат. Я хочу поместить ответы пользователя в мои базы данных.

Вот ссылка с моим кодом: https://codepen.io/maria-lupu-the-sasster/pen/abGdgPQ

В конце, после завершения "разговора" и появления кнопки "Поехали", я хочу, чтобы все детали (этот 'uid' и имя) были добавлены в мои базы данных.

Вот моя модель, в которую я хочу добавить детали:

class Employee(models.Model):
    employee_id = models.BigAutoField(primary_key=True)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    u_id=models.CharField(max_length=20)
    badge_number=models.CharField(max_length=50)
    email_adress = models.CharField(max_length=300)
    role = models.CharField(max_length=40)

    def __str__(self):
        return self.last_name
  • для first_name и last_name я думал сделать сплит к строке, предоставленной пользователем (в тот момент, когда бот из чата спрашивает пользователя о его имени)
  • адрес_почты будет состоять из uid+@gmail.com

Я искал в google много решений, но я все еще не знаю, как это сделать. Я видел что-то с Ajax, но я не знаю, как с этим работать. Пожалуйста, кто-нибудь может мне помочь и объяснить?

Вот пример Ajax Post для django и базового представления (возможно, лучше использовать формы)

Если требуется вход в систему, вам нужно разместить: {% csrf_token %} где-то в шаблоне и csrfmiddlewaretoken нужно включить в пост... или, может быть, вам всегда это нужно? - не знаю, я всегда это включал.

function save(employee_id, first_name, last_name, u_id, badge_number, email_adress, role){
    postData = {
        'employee_id': employee_id,
        'first_name': first_name,
        'last_name': last_name,
        'u_id': u_id,
        'badge_number': badge_number,
        'email_adress': email_adress,
        'role': role,

        // if login is required you need to pass this, 
        'csrfmiddlewaretoken': $('[name=csrfmiddlewaretoken]').val(),
    };

    $.ajax({
        method: 'post',
        url: 'url_to_save_view', // put your URL here
        data: postData,
        success: function(data){
            console.log(data);
            // do things
        },
        error: function(event,xhr,settings,errorText){
          alert('error');
        }
    });
}
def saveconvo(request):
    if request.method == 'POST':

        Employee.objects.create(
            employee_id=request.POST.get('employee_id'),
            first_name=request.POST.get('first_name'),
            last_name=request.POST.get('last_name'),
            u_id=request.POST.get('u_id'),
            badge_number=request.POST.get('badge_number'),
            email_adress=request.POST.get('email_adress'),
            role=request.POST.get('role'),
            )

        return HttpResponse(
            json.dumps({'status':True),
            content_type="application/json"
        )
Вернуться на верх