URLs zwischen Anwendungen im selben Projekt weitergeben


1

Ich versuche eine API zu modellieren und verwende separate Apps innerhalb von Django, um verschiedene Webdienste darzustellen. Ich möchte, dass App A einen Link aufnimmt, der App B entspricht, und die json Antwort analysieren.

Gibt es eine Möglichkeit, die URL zu App B dynamisch zu erstellen, so dass ich den Code in Entwicklung testen kann und nicht zu viel vor der Produktion ändern? Das Problem ist, dass ich localhost nicht als Teil eines Links verwenden kann.

Ich benutze derzeit urllib, aber schließlich möchte ich etwas weniger Hacky und besser mit den Web-Services REST Paradigma tun.

2

Man könnte so etwas wie

if settings.DEBUG: 
    other = "localhost" 
else: 
    other = "somehost" 

und andere tun verwenden Sie die externe URL zu erstellen. Im Allgemeinen codieren Sie im DEBUG-Modus und stellen ihn im Nicht-DEBUG-Modus bereit. settings.DEBUG ist ein 'Standard' Django-Ding.

  0

platform.node() ist auch sehr nützlich (das Plattformmodul ist Teil der Standardbibliothek). 25 sep. 082008-09-25 03:46:05


1

Mit "separate Apps in Django" meinen Sie separate Anwendungen mit gemeinsamen Einstellungen? Das heißt, zwei Anwendungen innerhalb der gleichen Django-Site (oder Projekt)?

Wenn dies der Fall ist, generiert das {% url%} - Tag eine korrekte absolute URL für eine der in der Einstellungsdatei aufgelisteten Apps.

Wenn es separate Django-Server mit separaten Einstellungen gibt, haben Sie das Standard-Internet-Problem des URI-Designs. Ihre URIs können nur mit dem Ändern des Hostnamens konsistent sein.

- http://localhost/some/path - development 

- http://123.45.67.78/some/path - someone's laptop who's running a server for testing 

- http://qa.mysite.com/some/path - QA 

- http://www.mysite.com/some/path - production 

Sie müssen nie die Host-Informationen zur Verfügung zu stellen, so dass alle Ihre Links <A HREF="/some/path/"> sind.

Dies funktioniert im Allgemeinen am besten. Sie können jemandes gelegentlichen Laptop ein Test-Server sein; Sie können die IP-Adresse mit ifconfig abrufen.

  0

Wie verwende ich die {% url%} - Funktionalität, wenn Sie sich in einer anderen als einer Vorlage befinden? 24 sep. 082008-09-24 18:44:19

  0

model.get_absolute_url() 24 sep. 082008-09-24 23:48:24

  0

Sie können auch django.core.urlresolvers.reverse (siehe in den Dokumenten) verwenden, um eine beliebige URL zu erhalten, nicht nur die absolute URL eines Modells. 25 sep. 082008-09-25 03:45:24