Comment obtenir le nom de domaine de mon site actuel à partir d'un modèle Django ? J'ai essayé de regarder dans la balise et les filtres mais rien n'y fait.
Réponses
Trop de publicités?Si vous souhaitez obtenir l'en-tête HTTP Host réel, consultez le commentaire de Daniel Roseman sur la réponse de @Phsiao. L'autre alternative est que si vous utilisez l'en-tête framework contrib.sites Vous pouvez définir un nom de domaine canonique pour un site dans la base de données (le mappage du domaine de la demande à un fichier de configuration avec le SITE_ID approprié est quelque chose que vous devez faire vous-même via la configuration de votre serveur Web). Dans ce cas, vous devez rechercher :
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
current_site.domain
vous devrez placer l'objet current_site dans un contexte de modèle vous-même si vous voulez l'utiliser. Si vous l'utilisez un peu partout, vous pourriez le regrouper dans un processeur de contexte de modèle.
J'ai découvert le {{ request.get_host }}
méthode.
En complément de Carl Meyer, vous pouvez faire un processeur contextuel comme ceci :
module.context_processors.py
from django.conf import settings
def site(request):
return {'SITE_URL': settings.SITE_URL}
local settings.py
SITE_URL = 'http://google.com' # this will reduce the Sites framework db call.
paramètres.py
TEMPLATE_CONTEXT_PROCESSORS = (
...
"module.context_processors.site",
....
)
modèles retournant l'instance de contexte l'url site est {{ SITE_URL }}
vous pouvez écrire votre propre routine si vous voulez gérer les sous-domaines ou SSL dans le processeur de contexte.
- Réponses précédentes
- Plus de réponses