【问题标题】:Prevent Django from prepending domain to beginning of URLs in RSS feeds防止 Django 在 RSS 提要中将域添加到 URL 的开头
【发布时间】:2016-09-08 20:23:28
【问题描述】:

我正在创建一个 RSS 提要,其中包含 URL 的应用程序链接,但 Django 将域名添加到任何不以 http 开头的链接。因此,应该是 itunes:// 的 URL 最终会变成 http://example.comitunes://...

更新: 因为我不是基于模型构建提要,所以我在 Feed 类中使用以下内容来创建链接。我已经验证了它们在传递给 item_link() 时与它们应该是完全一样的,但是 Django 将 http://example.com 附加到每个不以 http:

def item_link(self, item):
  return item['url']

如果链接是http://foo.com/some_external_domain/,没有问题。 如果链接是 itunes://some_itunes_store_link,Django 会将其转换为 http://example.comitunes://some_itunes_store_link

域名正确。那不是问题。问题是我不能在不破坏该链接的情况下将域名附加到应用程序链接。我不知道如何告诉 Django 停止更正不需要更正的链接。

【问题讨论】:

  • 也许在管理员中检查您的网站?
  • 我什至在管理员中都没有站点选项。但如果我这样做了,更改它不会影响依赖它的站点的其他部分吗?我只需要阻止 Django 尝试更正不应该“更正”的提要 URL。
  • 你能给我们看一些代码吗?会不会是你没有设置好的链接属性?
  • 我已经用更多细节更新了这个问题。

标签: django python-2.7 django-views


【解决方案1】:

这在 Django 中是不可能的。

根据 Django 的feed documentation

如果链接不返回域,联合框架将 根据您的 SITE_ID 插入当前站点的域 设置。

我的解决方案是手动构建整个 RSS 提要作为模板。对于 Django 提要中的一个简单选项,这是一个不幸的解决方案,但它确实有效。

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2012-02-25
    相关资源
    最近更新 更多