Передача URL-адресов между приложениями в одном проекте


1

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

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

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

2

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

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

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

  0

platform.node() также очень полезен для этого (модуль платформы является частью стандартной библиотеки). 25 сен. 082008-09-25 03:46:05


1

Под «отдельными приложениями в 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.

  0

Как использовать функциональность {% url%} в другом месте, кроме шаблона? 24 сен. 082008-09-24 18:44:19

  0

model.get_absolute_url() 24 сен. 082008-09-24 23:48:24

  0

Вы также можете использовать django.core.urlresolvers.reverse (посмотреть в документах), чтобы получить любой URL, а не только абсолютный URL модели. 25 сен. 082008-09-25 03:45:24