@Gourii

Как отправить данные из шаблона во views Django?

Не понимаю как отправить данные с шаблона html во views, чтобы в процедуре произошла ох обработка. Запутался окончательно.
Имеется страница с двумя кнопками, и полем ввода.

6055d9efe979b226971780.png
Код html

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Send Data to Server</title>
    <script src="{% static "js/jquery-3.5.1.min.js" %}""></script>
    <link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}"" />
    <script>
        function send_data(){
            $.ajax({
                url: 'update/',
                type: 'post',
                data: $(".pole").val,
                success: function() {console.log('Save')},
                datatype: 'json',
            });
        };
    </script>
</head>
<body>
    <input value="Home" type="button" onclick="location.href='/'" /><br>
    <input id="pole" type="text" placeholder="Test Text" ><br>
    <button onclick="send_data()" id="bsend" class="btn btn-success" >Send</button>
</body>
</html>


Кусок views.py

def update(request, dsend):
    if request.method == 'POST':
        print(dsend)


urls.py

from django.contrib import admin
from django.urls import path, include
from get_data import views

urlpatterns = [
    path('', views.root),
    path('asset/', views.index),
    path('asset2/', views.index2),
    path('add/', views.add_record),
    path('send/update/', views.update),
    path('send/', views.send)
]


Два вопроса:
1) Где в шаблоне Django дописать {% csrf_token %}, чтобы не было ошибок в логах:

Forbidden (CSRF token missing or incorrect.): /send/update/
[20/Mar/2021 14:25:38] "POST /send/update/ HTTP/1.1" 403 2513

2) Правильно ли я вообще отправляю данные из шаблона во views?
  • Вопрос задан
  • 275 просмотров
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Не проверял, но что-то типа такого может сработать:
$.ajax({
                url: 'update/',
                ...
                beforeSend: function(request) {
                    return request.setRequestHeader('X-CSRF-Token', "{{ csrf_token }}");
                },
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы