1

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

有没有办法动态地构造 App B 的 url,这样我就可以在开发中测试代码,并且在投入生产之前不会改变太多?问题是我不能使用 localhost 作为链接的一部分。

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

4

2 回答 2

1

你可以做类似的事情

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

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

于 2008-09-23T21:51:15.323 回答
1

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

如果是这样,{% url %} 标签将为设置文件中列出的任何应用程序生成正确的绝对 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 地址。

于 2008-09-23T22:52:54.130 回答