Вот более универсальная версия решение .
Макета, Мы можем использовать отражение для достигания защищенного свойство DoubleBuffered , и затем это может быть установлено на верный .
Примечание : Вы должны платить свои налоги разработчика а не двойная буферизация использования, если пользователь будет работать на сессии служб удаленных рабочих столов (например, Удаленный рабочий стол), то Этот вспомогательный метод не включит двойную буферизацию, если человек будет работать в удаленном рабочем столе.
public static void SetDoubleBuffered(System.Windows.Forms.Control c)
{
//Taxes: Remote Desktop Connection and painting
//http://blogs.msdn.com/oldnewthing/archive/2006/01/03/508694.aspx
if (System.Windows.Forms.SystemInformation.TerminalServerSession)
return;
System.Reflection.PropertyInfo aProp =
typeof(System.Windows.Forms.Control).GetProperty(
"DoubleBuffered",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
aProp.SetValue(c, true, null);
}
Тег {% url%}
генерирует только часть пути URL-адрес, а не часть хоста. Он генерирует только что-то вроде «/ path / to / here» (все, что вам нужно сделать, это «просмотреть исходный код», и вы увидите, что это все содержимое href
). Ваш браузер предполагает, что если вы в настоящее время находитесь на http://example.com , ссылка также должна находиться внутри http://example.com . Итак, все, что вам нужно сделать для создания защищенной ссылки в вашем шаблоне, это:
<a href="https://example.com{% url blah %}">
Если вы не хотите жестко кодировать доменное имя (а я бы не стал), вы можете использовать объект Site , и он будет выглядеть примерно так:
<a href="https://{{ site.domain }}{% url blah %}">
Или, если вы этого не сделаете хотите использовать структуру сайтов, вы можете использовать request.get_host
:
<a href="https://{{ request.get_host }}{% url blah %}">
Я мало работал с защищенными URL-адресами, но немного поработал с satchmo, в котором есть промежуточное ПО и некоторые утилиты для него. Промежуточное ПО просто проверяет наличие ключа SSL = True
в параметрах просмотра и таким образом обеспечивает безопасность запроса. Возможно, вам не нужно делать это настолько сложным, но вы можете взглянуть на то, как это реализовано.
Satchmo находится на битбаке здесь
Я также смог найти фрагменты для промежуточного программного обеспечения, которые также должны сможет помочь вам получить безопасный URL-адрес для входа:
Первый является оригиналом, в то время как вторая должна быть улучшенной версией в какой-то момент, но может быть уже не так. Вы можете взглянуть на них.
Используя satchmo или один из фрагментов промежуточного программного обеспечения, вы должны иметь возможность делать что-то вроде
{% url login_page %}
{% url login_page SSL=1 %}
Возможно, вы могли бы написать тег url_https
, который делает то же самое, что и url
, но указывает на HTTPS-версию URL.