Избегайте токена csrf в методе django post

Я делаю часть веб-приложения, где (незалогиненные пользователи, все посетители) могут заполнить форму и я должен сохранить эти данные (имя, номер телефона, вопрос) в базе данных... Я делаю REST с использованием Django, но для фронтенда я буду использовать React или Django, и я делаю POST метод во фреймворке Django, который читает JSON данные из POST https запроса, а затем я сохраняю эти данные в базу данных... Но я получаю ошибку CSRF verification failed. Request aborted. потому что я не использую CSRF токен, потому что он не требуется для этого (у меня нет зарегистрированных пользователей). Но я не хочу отключать CSRF, потому что для страницы администратора я буду использовать его для аутентификации пользователей? Так что кто-нибудь знает, как избежать использования CSRF токена для этого метода? Заранее спасибо.

def saveDataToDatabase(request):
    if request.method == 'POST':
        json_data = json.loads(request.body) 
        try:
            data = json_data['data']
        except KeyError:
            HttpResponseServerError("Malformed data!")

Это часть метода...

Можно отключить защиту csrf на представлении с помощью @csrf_exempt декоратора.

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def saveDataToDatabase(request):
    # Your code here

Больше Инфо о Django doc

Думали ли вы об использовании Views для обработки запросов? Вы можете использовать его, чтобы вам не пришлось делать второй совет, который я вам даю.

Если первый совет был недостаточно хорош, вы можете отключить токен csrf в файле настроек Django. Вам нужно удалить (или закомментировать) django.middleware.csrf.CsrfViewMiddleware в списке Middleware available.

Любой другой вопрос просто задайте ;)

Вернуться на верх