我正在尝试模拟API并在Django中使用单独的应用程序来表示不同的Web服务。我希望App A接收与App B相对应的链接并解析json
响应。
有没有办法动态构建App B的url,以便我可以测试开发中的代码,而不是在投入生产之前进行更改?问题是我不能将localhost用作链接的一部分。
我目前正在使用urllib,但最终我想做一些不那么hacky并且更适合Web服务REST
范例的东西。
答案 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地址。