Django项目中的SSL(django-sslserver)问题

时间:2014-04-03 06:10:15

标签: python django ssl

我在Django 1.6.2,Ubuntu 12.04 LTS中使用virtualenv。由于我想将项目转移到https,我安装了django-sslserver
项目需要自签名,并且适用于主页。但是,我的django项目中的应用程序遇到了问题。并非所有页面都被重定向到https,因此会导致404错误(仅在明确加前缀为https时才有效)。此外,整个模板(外观,即静态文件?)丢失。 到底发生了什么?如何确保所有网页都重定向到https,其工作方式与http相同?

1 个答案:

答案 0 :(得分:4)

已修改:我的拉取请求已合并。现在通常会提供静态资源。

问题是没有实现runsslserver命令来提供静态资源。一种解决方法是覆盖get_handler中的PATH_TO_PYTHON_SITE_PACKAGE/sslserver/management/commands/runsslserver.py,如下所示:

# ...
from django.contrib.staticfiles.handlers import StaticFilesHandler
from django import get_version

# ...

class Command(runserver.Command):
    # ...

    help = "Run a Django development server over HTTPS"

    def get_handler(self, *args, **options):
        """
        Returns the static files serving handler wrapping the default handler,
        if static files should be served. Otherwise just returns the default
        handler.

        """
        handler = super(Command, self).get_handler(*args, **options)
        use_static_handler = options.get('use_static_handler', True)
        insecure_serving = options.get('insecure_serving', False)
        if use_static_handler:
            return StaticFilesHandler(handler)
        return handler

    # ...

您可能希望使用

获取您的网站包路径
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

我还提交了pull request,以防您想要自行分支,合并并重新安装。

干杯