在同一项目中的应用程序之间传递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地址。