在同一项目中的应用程序之间传递网址


1

我试图模拟API并在Django中使用单独的应用程序来表示不同的Web服务。我希望应用程序A获取与应用程序B对应的链接并解析json响应。

有没有办法动态构造URL以应用B,这样我可以在开发测试代码,并在投入生产之前不会更改为多少?问题是我不能使用本地主机作为链接的一部分。

我目前使用的urllib,但最终我想少做哈克和更好的拟合与Web服务REST范式的东西。

2

你可以做类似

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

并使用其他建设的外部URL。通常,您在DEBUG模式下进行编码并以非DEBUG模式进行部署。 settings.DEBUG是一个'标准'的Django事物。

  0

platform.node()对此也非常有用(平台模块是标准库的一部分)。 25 9月. 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/">

这一般来说是最好的。您可以将某人的随机笔记本电脑作为测试服务器;你可以使用ifconfig来获取IP地址。

  0

如何在模板以外的地方使用{%url%}功能? 24 9月. 082008-09-24 18:44:19

  0

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

  0

您也可以使用django.core.urlresolvers.reverse(看看文档)得到任何URL,而不只是一个模型的绝对URL。 25 9月. 082008-09-25 03:45:24