在https站点上集成django-disqus

时间:2014-06-11 10:09:18

标签: python django disqus

我在我的网站上使用了django-disqus软件包(https://github.com/arthurk/django-disqus),该软件在开发方面效果很好。但是我的生产服务器在https上运行,当我查看页面时出现错误,并且没有加载disqus注释。控制台中显示的错误表明代码被阻止,因为它试图从... discus.com/count.js和... discus.com/embed.js运行不安全的内容,并且内容应该通过HTTPS加载

有谁知道如何解决这个问题?我已经查看了文档http://django-disqus.readthedocs.org/en/latest/,但无法找到这一点。

1 个答案:

答案 0 :(得分:0)

编辑2(2014年7月15日):

最新版本的django-disqus已经上传到pypi,可以通过pip或easy_install安装。这包括使用协议相对URL的模板,因此现在可以在从HTTP或HTTPS提供的站点上轻松使用。

编辑(2014年7月4日):

我已联系了存储库所有者并获得了访问权限。最新的合并到master中支持协议相对URL。它可以使用pip直接从github安装:

pip install git+https://github.com/arthurk/django-disqus

原始答案:

快速查看github上的django-disqus代码

https://github.com/arthurk/django-disqus/blob/master/disqus/templates/disqus/show_comments.html

看起来http协议是硬编码的。 github上已经有一个开放的问题来支持这个问题了,但它看起来好像代码已经触及了一段时间,这意味着作者可能不感兴趣(同样,有10个开放拉请求,这不是'这也是一个很好的迹象。

https://github.com/arthurk/django-disqus/issues/18

您最简单的解决方案就是:

在您的settings.py文件中,确保您的模板配置是这样的(我在所有项目中执行此操作,因此我可以通过在我的网站中提供替代模板轻松覆盖某些第三方应用中的模板:

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)
TEMPLATE_DIRS = (os.path.join('path', 'to', 'mydjangoroot', 'myprojectroot', 'templates'),)

在你的机器上找到django-disqus软件包并将'templates'文件夹复制到settings.py文件所在的文件夹中(如果你做了类似我上面显示的内容)

如果您只想使用HTTPS,只需打开修改从HTTP到HTTPS使用的协议的模板文件即可。

为什么会这样?

什么时候调用呈现模板的函数之一(如django.shortcuts.render)。

Django使用一系列模板加载器类来确定模板的确切位置。

我首先指定的 filesystem.Loader 将首先使用我在分配给TEMPLATE_DIRS的元组中列出的任何目录。

其次,如果未找到模板 app_directories.Loader ,它将搜索任何已安装的应用程序,在名为“templates”的子目录下搜索与模板请求匹配的路径。这通常是我喜欢的行为,因此,正如我上面提到的,我可以直接在项目中覆盖第三方应用程序的模板。