Передача URL-адресов между приложениями в одном проекте - PullRequest
1 голос
/ 24 сентября 2008

Я пытаюсь смоделировать API и использую отдельные приложения в Django для представления различных веб-сервисов. Я бы хотел, чтобы приложение A получило ссылку, соответствующую приложению B, и проанализировало ответ json.

Есть ли способ динамически создать URL-адрес для приложения B, чтобы я мог протестировать код в процессе разработки и не вносить значительных изменений перед началом работы? Проблема в том, что я не могу использовать localhost как часть ссылки.

В настоящее время я использую urllib, но в конечном итоге я хотел бы сделать что-то менее хакерское и лучше приспособленное к веб-сервисам REST paradigm.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2008

Вы могли бы сделать что-то вроде

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

и используйте другое для создания внешнего URL. Как правило, вы кодируете в режиме отладки и развертываете в режиме, отличном от отладки. settings.EBUG - это «стандартная» вещь Django.

1 голос
/ 24 сентября 2008

Под «отдельными приложениями в Django» вы подразумеваете отдельные приложения с общими настройками? То есть два приложения на одном сайте (или проекте) Django?

Если это так, тег {% url%} сгенерирует правильный абсолютный URL для любого из приложений, перечисленных в файле настроек.

Если существуют отдельные серверы Django с отдельными настройками, у вас есть стандартная проблема с Интернетом при разработке URI. Ваш URI может соответствовать только изменению имени хоста.

- 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

Вам никогда не нужно предоставлять информацию о хосте, поэтому все ваши ссылки <A HREF="/some/path/">.

Это, как правило, работает лучше всего. У вас может быть чей-то случайный ноутбук, являющийся тестовым сервером; Вы можете получить IP-адрес, используя ifconfig.

...