Избегайте токена 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.
Любой другой вопрос просто задайте ;)