¿Cómo hacer un JSON POST simple utilizando el marco REST de Django? Falta el token CSRF o es incorrecto

Apreciaría que alguien me muestre cómo hacer una solicitud POST simple utilizando JSON con el marco de Django REST. No veo ningún ejemplo de esto en el tutorial en ninguna parte?

Aquí está mi objeto de modelo de rol que me gustaría publicar. Este será un nuevo rol que me gustaría agregar a la base de datos, pero obtengo un error 500.

{
    "name": "Manager", 
    "description": "someone who manages"
}

Aquí está mi solicitud de curvatura en un indicador de terminal de bash:

curl -X POST -H "Content-Type: application/json" -d '[
{
    "name": "Manager", 
    "description": "someone who manages"
}]'


http://localhost:8000/lakesShoreProperties/role

La URL

http://localhost:8000/lakesShoreProperties/roles

Funciona con una solicitud GET, y puedo desplegar todos los roles en la base de datos, pero parece que no puedo crear ningún Rol nuevo. No tengo permisos establecidos. Estoy usando una vista estándar en 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

Y en miurls.py para esta aplicación, las url relevantes - mapeos de vista son correctas:

url(r'^roles/

El mensaje de error es:

{
    "detail": "CSRF Failed: CSRF token missing or incorrect."
}

¿Qué está pasando aquí y cuál es la solución para esto? ¿Localhost es una solicitud entre sitios? Yo he añadido@csrf_exempt aRoleDetail yRoleList Pero no parece cambiar nada. ¿Se puede agregar este decorador a una clase, o se debe agregar a un método? Añadiendo el@csrf_exempt Decorar, mi error se convierte en:

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'

Luego deshabilité CSRF a través de toda la aplicación, y ahora recibo este mensaje:

{"non_field_errors": ["Datos no válidos"]} cuando mi objeto JSON que conozco es válido como json. Es un error que no es de campo, pero estoy atrapado aquí.

Bueno, resulta que mi json no era válido?

{
    "name": "admin", 
    "description": "someone who administrates"
}

vs

[
    {
        "name": "admin",
        "description": "someone who administrates"
    }
]

Tener los corchetes [], hace que la solicitud POST falle. Pero utilizando el validador de jsonlint.com, ambos objetos de mi json se validan.

Actualizar: El problema fue con el envío del POST con PostMan, no en el backend. Verhttps://stackoverflow.com/a/17508420/203312

, views.RoleList.as_view()), url(r'^role/(?P<pk>[0-9]+)/

El mensaje de error es:

{
    "detail": "CSRF Failed: CSRF token missing or incorrect."
}

¿Qué está pasando aquí y cuál es la solución para esto? ¿Localhost es una solicitud entre sitios? Yo he añadido@csrf_exempt aRoleDetail yRoleList Pero no parece cambiar nada. ¿Se puede agregar este decorador a una clase, o se debe agregar a un método? Añadiendo el@csrf_exempt Decorar, mi error se convierte en:

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'

Luego deshabilité CSRF a través de toda la aplicación, y ahora recibo este mensaje:

{"non_field_errors": ["Datos no válidos"]} cuando mi objeto JSON que conozco es válido como json. Es un error que no es de campo, pero estoy atrapado aquí.

Bueno, resulta que mi json no era válido?

{
    "name": "admin", 
    "description": "someone who administrates"
}

vs

[
    {
        "name": "admin",
        "description": "someone who administrates"
    }
]

Tener los corchetes [], hace que la solicitud POST falle. Pero utilizando el validador de jsonlint.com, ambos objetos de mi json se validan.

Actualizar: El problema fue con el envío del POST con PostMan, no en el backend. Verhttps://stackoverflow.com/a/17508420/203312

, views.RoleDetail.as_view()),

El mensaje de error es:

{
    "detail": "CSRF Failed: CSRF token missing or incorrect."
}

¿Qué está pasando aquí y cuál es la solución para esto? ¿Localhost es una solicitud entre sitios? Yo he añadido@csrf_exempt aRoleDetail yRoleList Pero no parece cambiar nada. ¿Se puede agregar este decorador a una clase, o se debe agregar a un método? Añadiendo el@csrf_exempt Decorar, mi error se convierte en:

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'

Luego deshabilité CSRF a través de toda la aplicación, y ahora recibo este mensaje:

{"non_field_errors": ["Datos no válidos"]} cuando mi objeto JSON que conozco es válido como json. Es un error que no es de campo, pero estoy atrapado aquí.

Bueno, resulta que mi json no era válido?

{
    "name": "admin", 
    "description": "someone who administrates"
}

vs

[
    {
        "name": "admin",
        "description": "someone who administrates"
    }
]

Tener los corchetes [], hace que la solicitud POST falle. Pero utilizando el validador de jsonlint.com, ambos objetos de mi json se validan.

Actualizar: El problema fue con el envío del POST con PostMan, no en el backend. Verhttps://stackoverflow.com/a/17508420/203312

Respuestas a la pregunta(8)

Su respuesta a la pregunta