Как добавить данные из 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"
)