Exemples de comment tester localement des sous-domaines avec django (sur Linux ou Mac)
Table des matières
Modifier le fichier hosts
Par défaut pour tester localement une application django, il est possible de faire tourner un serveur
python manage.py runserver
et aller à l'url
localhost:8000
Maintenant, nous souhaitons tester des sous-domaines, par exemple :
www.localhost:8000
fr.localhost:8000
es.localhost:8000
.
.
.
Pour ce faire, ouvrez le fichier hosts situé dans le dossier etc :
vi /etc/hosts
donne par exemple :
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
Pour tester les sous-domaines localement, remplacez simplement la ligne
127.0.0.1 localhost
par
127.0.0.1 www.localhost fr.localhost
maintenant avec
python manage.py runserver
il est possible d'utiliser l'url
www.localhost:8000
ou
fr.localhost:8000
Bonus
Extrayez le nom du sous-domaine dans une vue Django :
full_url = request.build_absolute_uri()
dn = full_url.split('/')[2]
subdomain = dn.split('.')[0]
Mettre en place une redirection de www vers fr ou inversement (What Is a 301 or 302 Redirect? )
if subdomain == 'www':
if article.language != 'en':
dn_redirect = dn.replace('www',article.language)
full_url_redirect = full_url.replace(dn,dn_redirect)
response = HttpResponse(status=301)
response['Location'] = full_url_redirect
return response
else:
if article.language == 'en':
dn_redirect = dn.replace(subdomain,'www')
full_url_redirect = full_url.replace(dn,dn_redirect)
response = HttpResponse(status=301)
response['Location'] = full_url_redirect
return response