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

时间:2008-09-23 21:47:36

标签: python django web-services development-environment

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

有没有办法动态构建App B的url,以便我可以测试开发中的代码,而不是在投入生产之前进行更改?问题是我不能将localhost用作链接的一部分。

我目前正在使用urllib,但最终我想做一些不那么hacky并且更适合Web服务REST范例的东西。

2 个答案:

答案 0 :(得分:2)

您可以执行类似

的操作
if settings.DEBUG:
  other = "localhost"
else:
  other = "somehost"

并使用other来构建外部URL。通常,您在DEBUG模式下编码并以非DEBUG模式部署。 settings.DEBUG是一个'标准'Django的东西。

答案 1 :(得分:1)

通过“Django中的单独应用程序”,您是指具有常见设置的单独应用程序吗?也就是说,同一个Django站点(或项目)中的两个应用程序?

如果是这样,{%url%}标记会为设置文件中列出的任何应用生成正确的绝对网址。

如果有单独的Django服务器具有单独的设置,则您具有URI设计的标准Internet问题。您的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地址。