Jak zrobić POST prosty JSON przy użyciu Django REST Framework? Brak tokenu CSRF lub niepoprawny

Byłoby wdzięczne, gdyby ktoś pokazał mi, jak zrobić proste żądanie POST przy użyciu JSON z ramką REST Django. Nigdzie nie widzę żadnych przykładów tego w tutorialu?

Oto mój obiekt modelu ról, który chciałbym POST. To będzie zupełnie nowa rola, którą chciałbym dodać do bazy danych, ale otrzymuję 500 błędów.

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

Oto moje żądanie curl w wierszu polecenia 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

CZY działa z żądaniem GET i mogę wyciągnąć wszystkie role z bazy danych, ale nie mogę stworzyć żadnych nowych ról. Nie mam ustawionych uprawnień. Używam standardowego widoku w 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

W moimurls.py dla tej aplikacji odpowiednie odwzorowania adresu URL - widok są poprawne:

url(r'^roles/

Komunikat o błędzie:

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

Co tu się dzieje i jaka jest na to poprawka? Czy localhost jest żądaniem krzyżowym? dodałem@csrf_exempt doRoleDetail iRoleList ale nic nie wydaje się zmieniać. Czy ten dekorator może być nawet dodany do klasy, czy też musi zostać dodany do metody? Dodawanie@csrf_exempt udekoruj, mój błąd staje się:

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'

Następnie wyłączyłem CSRF przez całą aplikację, a teraz otrzymuję tę wiadomość:

{"non_field_errors": ["Nieprawidłowe dane"]}, gdy mój obiekt JSON, który znam, jest poprawny json. To błąd niezwiązany z polem, ale utknąłem tutaj.

Okazuje się, że mój syn nie był ważny?

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

vs

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

Posiadanie nawiasów zamykających [] powoduje niepowodzenie żądania POST. Ale za pomocą walidatora jsonlint.com oba moje obiekty json sprawdzają poprawność.

Aktualizacja: Problem polegał na wysłaniu POST z PostMan, a nie na zapleczu. Widziećhttps://stackoverflow.com/a/17508420/203312

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

Komunikat o błędzie:

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

Co tu się dzieje i jaka jest na to poprawka? Czy localhost jest żądaniem krzyżowym? dodałem@csrf_exempt doRoleDetail iRoleList ale nic nie wydaje się zmieniać. Czy ten dekorator może być nawet dodany do klasy, czy też musi zostać dodany do metody? Dodawanie@csrf_exempt udekoruj, mój błąd staje się:

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'

Następnie wyłączyłem CSRF przez całą aplikację, a teraz otrzymuję tę wiadomość:

{"non_field_errors": ["Nieprawidłowe dane"]}, gdy mój obiekt JSON, który znam, jest poprawny json. To błąd niezwiązany z polem, ale utknąłem tutaj.

Okazuje się, że mój syn nie był ważny?

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

vs

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

Posiadanie nawiasów zamykających [] powoduje niepowodzenie żądania POST. Ale za pomocą walidatora jsonlint.com oba moje obiekty json sprawdzają poprawność.

Aktualizacja: Problem polegał na wysłaniu POST z PostMan, a nie na zapleczu. Widziećhttps://stackoverflow.com/a/17508420/203312

, views.RoleDetail.as_view()),

Komunikat o błędzie:

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

Co tu się dzieje i jaka jest na to poprawka? Czy localhost jest żądaniem krzyżowym? dodałem@csrf_exempt doRoleDetail iRoleList ale nic nie wydaje się zmieniać. Czy ten dekorator może być nawet dodany do klasy, czy też musi zostać dodany do metody? Dodawanie@csrf_exempt udekoruj, mój błąd staje się:

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'

Następnie wyłączyłem CSRF przez całą aplikację, a teraz otrzymuję tę wiadomość:

{"non_field_errors": ["Nieprawidłowe dane"]}, gdy mój obiekt JSON, który znam, jest poprawny json. To błąd niezwiązany z polem, ale utknąłem tutaj.

Okazuje się, że mój syn nie był ważny?

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

vs

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

Posiadanie nawiasów zamykających [] powoduje niepowodzenie żądania POST. Ale za pomocą walidatora jsonlint.com oba moje obiekty json sprawdzają poprawność.

Aktualizacja: Problem polegał na wysłaniu POST z PostMan, a nie na zapleczu. Widziećhttps://stackoverflow.com/a/17508420/203312

questionAnswers(8)

yourAnswerToTheQuestion