Django相对网址与https
我有一个Django项目,某些网址部分使用https,比如/account/、/admin/和/purchase/。
当我在这些https页面上时,所有的内部链接{% url foo %}都会指向https://my_url。
但是我不想让这些页面显示为https,比如首页、联系方式等。
对于这种需求,有什么解决办法呢?
强制使用绝对网址吗?
http://{{ domain }}{% url foo %}
这样做不是很好。
5 个回答
2
你可以让你的网页服务器把请求改成http格式,这样Django就不需要知道这些事情了。
4
想法:你可以使用自定义的中间件来把某些网址或者网址模式从https重定向到http(或者反过来)。这也可以在Apache(或者其他网络服务器)配置中完成。
4
正如Tomasz所建议的,一种方法是设置中间件来根据需要在https和http之间进行重定向。这里有一个实现示例——这个想法是给那些应该在https下提供的视图加上装饰器,当用户从一个安全的视图导航到一个不需要安全的视图时,中间件会自动把他们重定向回http版本的页面。