Pouvez-vous vérifier le protocole internet de Django template?
Droit maintenant, si je veux vérifier si la page en cours est accessible par http://
ou https://
, je vais utiliser le code Javascript suivant dans mes modèles et écrire le code html de document.write
:
<script type="text/javascript">
var protocol = document.location.protocol;
if (protocol == "http:")
document.write("regular");
else
document.write("secured");
</script>
Est-il un autre moyen pour parvenir à la ci-dessus dans Django modèle sans l'aide de Javascript?
- si vous êtes seulement en essayant d'éviter mixte http/https contenu dans votre django généré par pages vous pouvez envisager d'utiliser le protocole relatif des URLs comme src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js".
Vous devez vous connecter pour publier un commentaire.
si vous utilisez un
RequestContext
, vous pouvez effectuer les opérations suivantes:Voir le la partie pertinente de l' de la documentation de Django.
//host.com/path
Cela permettra de vous connecter via https lorsque la connexion est sécurisée, via http, quand il ne l'est pas.Depuis Django 1.10, vous pouvez utiliser:
dans la vue, ou dans un modèle:
De les docs
Vous devez activer la demande appropriée au contexte processeur de votre setting.py fichier:
Le modèle permettra d'avoir une variable nommée demande qui contient le courant HttpRequest. Vous pouvez l'utiliser pour trouver le protocole:
Essayez d'utiliser RequestContext et
request.is_secure
dans votre modèle.Une mise en garde, le processus de détection de HTTPS peut différer d'un serveur d'installation à la suivante de sorte que vous pourriez avoir à faire un peu de travail pour obtenir
request.is_secure
de travail. Vous pouvez le faire soit en veillant à ce que votre front-end /reverse proxy "jeux de HTTP_X_FORWARDED_HOST" ou par la rédaction d'un middleware de classe qui est personnalisé à votre installation.Utiliser le depricated[1] SetRemoteAddrFromForwardedFor code[2] comme un point de départ, si vous allez au personnalisés middleware route.
(Je suis seulement permis 1 lien par post, donc s'il vous plaît excuser les foiré liens)
[1]: docs.djangoproject.com/en/dev/releases/1.1/#id1 "Django 1.1 notes de version - Retiré SetRemoteAddrFromForwardedFor middleware"
[2]: code.djangoproject.com/browser/django/trunk/django/middleware/http.py?rev=11000#L33 "SetRemoteAddrFromForwardedFor"