django a le Cadre de sites A > Pour prendre en charge plusieurs emplacements de site Web à partir d'une seule installation Django. p>
edit (ci-dessous est une hypothèse incorrecte du système) p>
Je comprends que le middleware définit la valeur Paramètres.Site_ID en fonction d'une recherche / cache du domaine de la demande. P>
Endedit p>
Mais lorsque vous testez localement, je suis chez http://127.0.0.0.1:8000/ , pas http://my-actual-domain.com/ p>
Comment voir localement mes différents sites pendant le développement? P>
3 Réponses :
Créer un fichier Paramètres distincts.py pour chaque site, y compris un paramètre à partir de maintenant, lors de l'exécution de Django Developer Server Spécifiez l'option Par exemple (en supposant que vous avez deux fichiers de réglage - paramètres_first.py et paramètres_second.py): p> fonctionnera Le premier site, et p> vous donnera un accès au deuxième site. p> Vous pouvez également les exécuter simultanément, en spécifiant différents ports: p> Les commandes ci-dessus (exécutez deux consoles différentes) rendront le premier site Web accessible sous http://127.0.0.1:8001/ et le second sous http: // 127.0.0.1:8002/ P> P> Site_Id CODE> approprié. Bien sûr, vous pouvez utiliser l'instruction importer code> pour partager le paramètre courant entre les fichiers. - Paramètres code> pour dire à Django quel site à exécuter. p>
Peut-être que vous êtes induire en erreur par la documentation. Vous avez écrit: p>
Je comprends que le middleware définit la valeur Paramètres.Site_ID en fonction d'une recherche / cache du domaine de la demande. P> blockQuote>
Ce n'est pas le cas. Cela fonctionne exactement l'inverse. Django utilise la valeur Paramètres.Site_ID pour rechercher l'objet Site correct dans la base de données. Cela renvoie votre domaine et votre nom de site préféré. P>
Les sites code> code> ont été conçus pour remplir (à mon avis) rare usecase que vous souhaitez avoir plusieurs sites avec la même base de données en arrière-plan. Cela vous permet de publier les mêmes articles sur différents sites, mais vous avez toujours la possibilité que certains modèles soient disponibles uniquement pour un seul site. P>
Pour développer plusieurs projets (qui ne utilise pas réellement le cadre de sites), vous n'avez pas à spécifier quoi que ce soit spécial. Vous pouvez utiliser le paramètre
Site_Id CODE> défini sur1 code>. Pour utiliser la vue de l'administrateur sur le site Web em>, vous pouvez définir dans votre base de données de développement, le domaineSite CODE> SOCT surlocalhost: 8000 P>. P>.Si vous souhaitez développer plusieurs sites à l'aide de la même base de données (et utilisez le cadre de sites), vous devez disposer de chaque projet avec un site code> distinct code> mais les mêmes paramètres de la base de données. Les valeurs de
site_id code> dans chaque projet de votre machine de développement sont dans la plupart des cas comme pour vos serveurs de production. P>
Merci Gregor. Je soupçonne que je suis grandement induire en erreur. Je vais probablement créer le middleware de faire ce que je faisais ce que Django faisait déjà et que je cherche un attribut de la chaîne de requête 'Site = my-Site-1.com' lorsque le domaine demandé est dans Paramètres.Development_Servers, comme: Si la demande. Meta ['Server_Name'] dans Paramètres.Development_Servers: #do Recherche et définissez le site de la session
FYI - J'ai publié Django-Dynamicsites aujourd'hui, qui a des installations pour résoudre ce problème - https: // bitbucket.org/uysrc/django-dynamicsites/src p>
Le lien semble être cassé
Le lien a expiré maintenant. Regle-le, s'il te plait.