2009-04-24 18 views
0

In der Test-Beispiel http://django-rest-interface.googlecode.com/svn/trunk/django_restapi_tests/examples/custom_urls.py in Zeile 19 zu analysieren sie die Anfrage.Pfad um die Umfrage_ID zu erhalten. Das sieht sehr fragil für mich aus. Wenn sich die URL ändert, bricht diese Zeile ab. Ich habe versucht, die poll_id weiterzugeben, aber das hat nicht funktioniert. Also meine Frage ist, wie verwende ich die Poll_id (oder einen anderen Wert) von der URL gesammelt?Django restapi Übergabe Parameter zu lesen()

+0

Sie haben einen Tippfehler in Ihrer URL: s/cooclecode/googlecode/ – vezult

+0

Bitte definieren Sie "hat nicht funktioniert". Haben Sie Fehler wegen unerwarteter Argumente zum Lesen bekommen() oder haben Sie andere Fehler bekommen? –

Antwort

0

Ansichten werden nur aufgerufen, wenn die zugeordnete URL übereinstimmt. Indem Sie die URL-Regex korrekt erstellen, können Sie garantieren, dass jede Anfrage, die an Ihre Ansicht übergeben wird, die poll_id an der richtigen Position im Anfragepfad hat. Dies ist, was das Beispiel tut:

url(r'^json/polls/(?P<poll_id>\d+)/choices/$', json_choice_resource, {'is_entry':False}), 

Die json_choice_resource Ansicht ist eine Instanz django_restapi.model_resource.Collection und damit die read() Methode der Collection wirkt immer nur auf Anfragen mit Wegen des erwarteten Formats.

+0

Also, wenn ich Sie richtig verstehe, funktioniert die Aufteilung nur auf den Teil der URL, der in der aufrufenden Datei url.py ist.
Wenn also die URL http://SomeHost.com/json/polls/5/choices/ oder http://SomeHost.com/SomeSystem/json/polls/5/choices/ lautet, wird der Split ("/") aufgelöst Das Gleiche, weil der Host-Teil der URL in einer anderen URL.py-Datei ist? –

+0

Das ist richtig. Wenn Sie den vollständigen Pfad relativ zur Domäne haben möchten, müssen Sie request.get_full_path() verwenden. – vezult

Verwandte Themen