Запрещено (CSRF cookie не установлен.) Django
Я пытаюсь сделать конечную точку API. И для этого я использую django.
Мой url в urls.py это :
path('tutorials/', tutorial_list_test.as_view()),
и мой views.py похож на
class tutorial_list_test(GuestOnlyView, FormView):
print("test");
@api_view(['GET', 'POST', 'DELETE'])
def tutorial_list(self):
request = self.request;
if request.method == 'POST':
alldata=request.POST
username = alldata.get("username", "0")
print("POST name: " + username)
return Response('The tutorial does not exist', status=status.HTTP_404_NOT_FOUND)
Но когда я делаю запрос, у меня каждый раз одна и та же ошибка "Forbidden (CSRF cookie not set.): /accounts/tutorials/"
Итак, я провел некоторое исследование и увидел несколько предложенных решений. Первым было использование csrf_exempt, но это не работает для меня:
path('tutorials/', csrf_exempt(tutorial_list_test.as_view())),
И это то же самое для всех методов, которые я использовал. Даже если я удалю эту строку из моего settings.py, ничего не изменится
# django.middleware.csrf.CsrfViewMiddleware',
Для тестирования я использую Postman, но даже при использовании моего angular front end, он делает то же самое.
const formData = new FormData()
formData.append('username', this.username_signup);
this.http.post('http://127.0.0.1:8000/accounts/tutorials/', formData)
.map((data: Response) => {
if (data !== null) {
console.log(JSON.stringify(data));
};
}).subscribe(response => console.log(response))
Я хотел бы узнать, есть ли у вас идеи, как я могу это сделать. Потому что мне нужно иметь доступ к моим моделям, поэтому не использовать класс и напрямую сделать def не вариант, даже если это работает (я пробовал, эффективно мои запросы проходят, если я удаляю класс и мой маршрут связан только с моим def tutorial_list). Спасибо.
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
@api_view(['GET', 'POST', 'DELETE'])
def tutorial_list(self):
# code