Ich djangorestframework==3.3.3
und Django==1.9.4
mitDjango Rastrahmen APIClient analysiert keine Abfrageparameter
Ich habe einen Test, wo ich will richtig, dass die Abfrageparameter verarbeitet überprüfen.
class TestResourceView(APITestCase):
def test_view_process_query_params_correctly(self):
client = APIClient()
client.login(username='<username>', password='password')
response = client.get('/api/v2/resource/1/users/?fields=first_name;last_name')
self.assertEqual(response.status_code, 200)
# .... rest of the test ....
Aus meiner Sicht habe ich print
Aussage nur um zu sehen, ob Abfrageparameter richtig analysiert werden, aber ich bekomme leere Abfrage Wörterbuch:
class Resource(APIView):
def get(self, request):
query_params = request.query_params
print('Printing query params')
print(query_params)
# .... rest of the code ....
def post(self, request):
query_params = request.query_params
print('Printing query params')
print(query_params)
# .... rest of the code ....
Ergebnis im Terminal, wenn Tests ausgeführt werden:
Printing query params
<QueryDict: {}>
In der gleichen Zeit, wenn ich post
Anfrage wie folgt testen:
response = client.post('/api/v2/resource/1/users/?fields=first_name;last_name')
i erhalten params falsch analysiert:
Printing query params
<QueryDict: {'last_name': [''], 'fields': ['first_name']}>
Was ist der richtige Weg APIClient
zu verwenden? Oder ist das immer noch ein Fehler? Weil es bereits ähnlich war issue
Die Idee ist, Abfrageparameter zu erhalten und sie so zu analysieren, wie ich brauche. Zum Beispiel könnte es params wie folgt geben:/api/v2/resource/1/users /? Fields = erster_name; nachname_, das in die Menge '{'first_name', 'last_name'}' geparst wird. Eine weitere Option '/ api/v2/resource/1/users /? Fields = 1-4', die unter der Haube in die Menge' {'first_name', 'last_name', 'phone', 'skype' geparst wird } '. Und noch, ein anderes Problem bleibt 'client.get ('/ api/v2/resource/1/users /? Fields = first_name; last_name')' ergibt leer 'query_params' – AmirM