ken*_*der 12 django https url-routing
如果我想为用户提供一个使用https://而不是使用登录网站http://的选项,我最好给他们一个选项,以便在我的视图或模板中实现.
我想在我的登录页面上找到"使用安全连接"链接 - 但是,如果不对网址进行硬编码,我该怎么做呢?
我希望能够做到:
{% url login_page %}
{% url login_page_https %}
Run Code Online (Sandbox Code Playgroud)
让他们指向http://example.com/login和https://example.com/login.
我怎样才能做到这一点?
Car*_*yer 19
该{% url %}标签只生成的URL,而不是主机部的路径部分.它只生成类似"/ path/to/here"的东西(你需要做的只是"查看源代码",你会看到它的全部内容href).这是您的浏览器假设您目前在http://example.com上,该链接也应该在http://example.com中.因此,您需要做的就是在模板中生成安全链接:
<a href="https://example.com{% url blah %}">
Run Code Online (Sandbox Code Playgroud)
如果您不想对域名进行硬编码(我不愿意),您可以使用Site对象并使其看起来像:
<a href="https://{{ site.domain }}{% url blah %}">
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想使用站点框架,则可以使用request.get_host:
<a href="https://{{ request.get_host }}{% url blah %}">
Run Code Online (Sandbox Code Playgroud)
我没有使用安全网址,但我已经使用了satchmo,它有一个中间件和一些实用工具.中间件只是检查SSL = True视图参数中的键,并以这种方式使请求安全.你可能不需要那么复杂,但你可以看看它是如何实现的.
Satchmo在这里叮叮当当
我还能够找到中间件的片段,它也应该能够帮助您获得安全的登录URL:
第一个是原版,而第二个应该是改进版本,在某些时候,但可能不再是这种情况.你可以看看它们.
使用satchmo或其中一个中间件片段,您应该可以执行类似的操作
{% url login_page %}
{% url login_page SSL=1 %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6925 次 |
| 最近记录: |