2011-10-25 14 views
5

Tytuł prawie wszystko mówi: Używam raw_post_data w kilku widokach, a więc potrzebuję klienta testowego do prawidłowego udzielenia dostępu do niego.Dostęp do raw_post_data w django klienta testowego

Skopiowałem ciąg raw_post_data, z fałszywego żądania, przekazałem go do json.loads(), a następnie użyłem wynikowego dicta jako danych POST dla klienta testowego. Następnie ustawiam typ zawartości na "application/json" - powoduje to pojawienie się raw_post_data, ale nie jest to ta sama raw_post_data, co żądanie próbne.

+0

mógłbyś zamieszczać (różnice pomiędzy danymi, które się pojawi) i wniosek nie zwariować zobaczyć? – jro

Odpowiedz

4

Po zmianie typu zawartości w kliencie testowym parametr danych nie jest już analizowany jako słownik, ale wysyłany bezpośrednio. Spróbuj skopiować swój ciąg JSON bezpośrednio jako parametr danych do swojej prośby o wpis, powinieneś otrzymać go w raw_post_data w swojej aplikacji.

2

Wystarczy postępować zgodnie z instrukcjami, jak poniżej:
        1. ustawić atrybut danych do ciąg.
        2. następnie ustawić content_type atrybut aplikacji/oktet strumienia.

payload = {'k1':'v1'} 
    data = json.dumps(payload) 
    response = self.client.post(url, data=data, content_type='application/octet-stream', **self.auth_headers) 
+0

To działało jak urok. Odniesienie: https://docs.djangoproject.com/en/1.9/_modules/django/test/client/ – Blas

Powiązane problemy