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

时间:2020-03-06 14:37:47  来源:igfitidea点击:

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

有没有一种方法可以动态地构建App B的url,以便我可以在开发中测试代码,而在投入生产之前不做太多更改?问题是我不能将本地主机用作链接的一部分。

我目前使用的是urllib,但最终我想做些不太hacky的事情,并且更好地适合于Web服务" REST"范例。

解决方案

你可以做类似的事情

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

并使用other来构建外部URL。通常,我们以DEBUG模式进行编码,并以非DEBUG模式进行部署。 settings.DEBUG是Django的``标准''东西。

"在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地址。