2011-06-16 5 views
5

Je gère une webapp Django pour un de mes clients. Nous l'avons construit à Django et pour les utilisateurs d'ordinateurs, c'est génial. Nous voulons maintenant répondre aux utilisateurs d'appareils mobiles. En plus d'un commutateur de modèle, nous avons également besoin que les choses fonctionnent différemment. L'application aura des vues qui fonctionnent de manière subtilement différente, mais la structure de l'URL doit également être simplifiée.Sites Django - Urls.py différent pour deux sites

Je me rends compte que je suis sur le point de demander l'éthique constitue une violation SEC, mais est-il un bon moyen de diviser le urls.py de sorte que la moitié de celui-ci est pour ourdomain.com et l'autre moitié est pour m.ourdomain.com? Si je peux le faire, je peux ajouter un mobile_views.py et écrire les nouvelles vues.

Les sites de Django sont activés dans le projet mais je suis heureux d'utiliser un hack de style request.domain.startswith('m.') codé en dur. On dirait que cela pourrait mieux fonctionner - mais je ne sais pas comment on obtient la demande du fichier URL.

Répondre

6

Utilisez middleware pour détecter l'accès à l'autre site et définir request.urlconf sur l'autre urlconf que vous souhaitez utiliser.

+0

Oui, ça va marcher pour moi. Merci. Edit: Je suppose que cela doit être l'une des premières règles de middleware à déclencher. Et savez-vous si 'reverse 'de Django fonctionnera toujours (en supposant que les nouvelles URL ont les mêmes noms)? – Oli

+0

Vous devrez peut-être passer 'request.urlconf' à [' reverse() '] (https://docs.djangoproject.com/en/dev/topics/http/urls/#django.core.urlresolvers.reverse), mais sinon ça devrait marcher. –