Django
  • Введение
  • Установка
  • Создание проекта
  • Создание приложения
  • Администрирование
  • Создание страниц
  • Динамические страницы
  • Добавление стилей
  • Шаблоны
  • Вывод одной записи
  • AJAX
  • Взаимодействие с БД
  • Сборка на Python3
  • Формы POST запрос
  • Cookie файлы
  • Работа с пользователями
  • Связь в моделях
  • PostgreSQL + JSON
  • Отключение csrf
Powered by GitBook
On this page

Was this helpful?

Отключение csrf

Для реализации AJAX запросов методом POST было принято решение отключить csrf защиту.

В файле views.py подключаю модуль:

from django.views.decorators.csrf import csrf_exempt

Описание метода, который получает тело запроса в виде строки, разбирает строку и получает два числа, вычисляет произведение чисел и возвращает ответ клиенту.

@csrf_exempt
def get_proizved(request):
    s = str(request.body)
    print("-------------------------------------------");
    print("Body: " + s)
    mass = []
    mass = s.split("_")
    a = mass[1]
    b = mass[2]
    print("A = " + a)
    print("B = " + b)
    ans = int(a) * int(b)
    print("Ans = " + str(ans))
    print("-------------------------------------------");
    return HttpResponse(str(ans))

Код на языке JavaScript, реализующий отправку POST запроса на сервер.

    function f() {
        const a = document.getElementById("aaa").value;
        const b = document.getElementById("bbb").value;
        const body = "_" + a + "_" + b + "_";
        const url = "/get_proizved/" + Math.random();

        console.log("----------------------------------");
        console.log("URL: " + url);
        console.log("Body: " + body);

        let r = new XMLHttpRequest();
        r.open("POST", url, true);
        r.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
        r.send(body);
        r.onreadystatechange = function() {
            if(r.readyState === 4 && r.status === 200) {
                alert(r.responseText);
                r = null;
            }
        }
    }

Ссылка на репозиторий с проектом:

https://github.com/maxim218/DJANGO_AJAX_POST_no_csrf
PreviousPostgreSQL + JSON

Last updated 5 years ago

Was this helpful?