【问题标题】:Itegrating django-disqus on a https site在 https 站点上迭代 django-disqus
【发布时间】:2014-07-15 12:04:29
【问题描述】:

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

有谁知道我该如何解决这个问题?我查看了文档http://django-disqus.readthedocs.org/en/latest/,但找不到提到的内容。

【问题讨论】:

  • 所以使用 HTTPS 来提供这些 JS 文件 - 是什么阻止了你?
  • 我只是想知道您是否更改了 Django-Disqus 包的设置,而不是为了让它工作而破解代码
  • 我刚刚为此打开了一个问题 - github.com/arthurk/django-disqus/issues/33 - 现在你必须自己更改它。
  • 自 2012 年以来已经存在一个关于此问题的问题。
  • 任何有兴趣的人。我已经联系了存储库所有者并获得了对 github 上项目的访问权限。我已将支持协议相对 URL 合并到一个分支中。您可以使用 pip pip install git+https://github.com/arthurk/django-disqus 安装它

标签: python django disqus


【解决方案1】:

编辑 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 上已经有一个 open issue 来支持这一点,但是看起来代码已经有一段时间没有被触及了,这意味着作者可能不感兴趣(另外,有 10 个 open pull request,这是'这也是一个好兆头)。

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

您最简单的解决方案是:

在您的 settings.py 文件中,确保您的模板配置是这样的(我在所有项目中都这样做,因此我可以通过在我的站点中提供替代模板来轻松覆盖某些 3rd 方应用程序中的模板:

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 包并将“模板”文件夹复制到与您的 settings.py 文件相同的文件夹中(如果您执行我上面显示的操作)

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

为什么会这样

你什么时候调用渲染模板的函数之一,(如 django.shortcuts.render)。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2017-01-22
    • 2023-03-23
    • 2017-03-25
    • 2019-04-20
    相关资源
    最近更新 更多