Django相对网址和https

时间:2010-11-10 19:00:53

标签: python django ssl https

我有一个Django项目使用https来获取网址的某些部分(/ account /,/ admin /,/ purchase /)。

在https模式下的其中一个页面上,所有相对内部链接{%url foo%}将指向https://my_url

但我不希望将这些页面显示为https:home,contacts ...

这种要求有哪些解决方案?

执行绝对网址?

 http://{{ domain }}{% url foo %} 

不太好。

5 个答案:

答案 0 :(得分:4)

创意:您可以使用自定义中间件从https重定向到http(反之亦然),以获取中心网址或网址格式。这也可以在Apache(或其他Web服务器)配置中完成。

答案 1 :(得分:4)

正如Tomasz所建议的,一种方法是根据需要设置中间件以重定向到https和从https重定向。这里是one implementation - 想法是装饰应该在https下提供的那些视图,当用户导航到一个不应该是安全的视图时,中间件会自动将它们重定向回http版本页面。

答案 2 :(得分:2)

可以使用您的网络服务器重写为http,这样Django甚至不需要知道。

答案 3 :(得分:2)

我发现this snippet可以很好地处理这种情况。需要SSL的视图将通过从http到https版本的URL的重定向来获取它们,反之亦然。

是的,在https页面上,您站点中非https页面的出站链接仍将以https开头,但用户将被重定向到http版本。

(但是有一个问题:如果您从http发布到https,反之亦然,它将无效)

答案 4 :(得分:2)