Как сделать POST простой JSON, используя Django REST Framework? Маркер CSRF отсутствует или неверен
Был бы признателен, если бы кто-то показал мне, как сделать простой запрос POST, используя JSON с каркасом DEST Django. Я не вижу никаких примеров этого в учебнике нигде?
Вот мой объект Ролевая модель, которую я хотел бы разместить. Это будет совершенно новая роль, которую я хотел бы добавить в базу данных, но я получаю ошибку 500.
{
"name": "Manager",
"description": "someone who manages"
}
Вот мой запрос curl в командной строке bash:
curl -X POST -H "Content-Type: application/json" -d '[
{
"name": "Manager",
"description": "someone who manages"
}]'
http://localhost:8000/lakesShoreProperties/role
URL
http://localhost:8000/lakesShoreProperties/roles
Работает с запросом GET, и я могу снять все роли в базе данных, но я не могу создать какие-либо новые роли. У меня нет установленных разрешений. Я использую стандартное представление в views.py
class RoleDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Role.objects.all()
serializer_class = RoleSerializer
format = None
class RoleList(generics.ListCreateAPIView):
queryset = Role.objects.all()
serializer_class = RoleSerializer
format = None
И по моемуurls.py
для этого приложения соответствующие отображения URL-адресов являются правильными:
url(r'^roles/Сообщение об ошибке:
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
Что здесь происходит, и как это исправить? Является ли localhost межсайтовым запросом? я добавил@csrf_exempt
вRoleDetail
а такжеRoleList
но это, похоже, ничего не меняет. Может ли этот декоратор быть добавлен в класс, или его нужно добавить в метод? Добавление@csrf_exempt
украсить, моя ошибка становится:
Request Method: POST
Request URL: http://127.0.0.1:8000/lakeshoreProperties/roles/
Django Version: 1.5.1
Exception Type: AttributeError
Exception Value:
'function' object has no attribute 'as_view'
Затем я отключил CSRF во всем приложении и теперь получаю следующее сообщение:
{"non_field_errors": ["Недопустимые данные"]}, когда мой JSON-объект, который я знаю, является допустимым json. Это ошибка не поля, но я застрял прямо здесь.
Что ж, получается, что мой JSON был недействительным?
{
"name": "admin",
"description": "someone who administrates"
}
против
[
{
"name": "admin",
"description": "someone who administrates"
}
]
Наличие квадратных скобок [] приводит к сбою запроса POST. Но используя валидатор jsonlint.com, оба моих объекта json проверяются.
Обновить: Проблема была в отправке POST с PostMan, а не в бэкэнд. Видетьhttps://stackoverflow.com/a/17508420/203312
, views.RoleList.as_view()),
url(r'^role/(?P<pk>[0-9]+)/Сообщение об ошибке:
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
Что здесь происходит, и как это исправить? Является ли localhost межсайтовым запросом? я добавил@csrf_exempt
вRoleDetail
а такжеRoleList
но это, похоже, ничего не меняет. Может ли этот декоратор быть добавлен в класс, или его нужно добавить в метод? Добавление@csrf_exempt
украсить, моя ошибка становится:
Request Method: POST
Request URL: http://127.0.0.1:8000/lakeshoreProperties/roles/
Django Version: 1.5.1
Exception Type: AttributeError
Exception Value:
'function' object has no attribute 'as_view'
Затем я отключил CSRF во всем приложении и теперь получаю следующее сообщение:
{"non_field_errors": ["Недопустимые данные"]}, когда мой JSON-объект, который я знаю, является допустимым json. Это ошибка не поля, но я застрял прямо здесь.
Что ж, получается, что мой JSON был недействительным?
{
"name": "admin",
"description": "someone who administrates"
}
против
[
{
"name": "admin",
"description": "someone who administrates"
}
]
Наличие квадратных скобок [] приводит к сбою запроса POST. Но используя валидатор jsonlint.com, оба моих объекта json проверяются.
Обновить: Проблема была в отправке POST с PostMan, а не в бэкэнд. Видетьhttps://stackoverflow.com/a/17508420/203312
, views.RoleDetail.as_view()),
Сообщение об ошибке:
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
Что здесь происходит, и как это исправить? Является ли localhost межсайтовым запросом? я добавил@csrf_exempt
вRoleDetail
а такжеRoleList
но это, похоже, ничего не меняет. Может ли этот декоратор быть добавлен в класс, или его нужно добавить в метод? Добавление@csrf_exempt
украсить, моя ошибка становится:
Request Method: POST
Request URL: http://127.0.0.1:8000/lakeshoreProperties/roles/
Django Version: 1.5.1
Exception Type: AttributeError
Exception Value:
'function' object has no attribute 'as_view'
Затем я отключил CSRF во всем приложении и теперь получаю следующее сообщение:
{"non_field_errors": ["Недопустимые данные"]}, когда мой JSON-объект, который я знаю, является допустимым json. Это ошибка не поля, но я застрял прямо здесь.
Что ж, получается, что мой JSON был недействительным?
{
"name": "admin",
"description": "someone who administrates"
}
против
[
{
"name": "admin",
"description": "someone who administrates"
}
]
Наличие квадратных скобок [] приводит к сбою запроса POST. Но используя валидатор jsonlint.com, оба моих объекта json проверяются.
Обновить: Проблема была в отправке POST с PostMan, а не в бэкэнд. Видетьhttps://stackoverflow.com/a/17508420/203312