Question

J'ai une logique personnalisée qui doit être exécuté à chaque fois une URL est inversée, même pour des applications tierces. Mon projet est une application Web mutualisée, et le locataire est identifié sur base de l'URL. Il n'y a pas une seule URL valide qui ne comprend pas un identifiant de locataire.

Je l'ai déjà une fonction wrapper autour reverse, mais maintenant je besoin d'un moyen de dire toutes les applications installées pour l'utiliser. L'enveloppe autour de reverse utilise un thread local pour injecter l'identifiant dans l'URL résultante. Je pourrais écrire cette fonction comme décorateur sur reverse, mais je ne sais pas où faire la décoration actuelle.

moyennement ferme Contrainte: J'utilise déjà 3 applications 3ème partie, et je vais probablement ajouter plus. Une solution ne devrait pas me demander de modifier le code source de toutes ces applications tierces. Je ne savoure pas l'idée de maintenir des taches sur le dessus de plusieurs arbres source 3e partie s'il y a un moyen plus facile. Je peux faire la documentation très clairement que reverse a été décoré.

La question d'origine: Où pourrais-je faire un tel changement qui garantit qu'elle appliquerait à chaque invocation de reverse

?

Question possible Autre: Quelle est une meilleure façon de faire en sorte que toutes les URL, y compris celles générées par la 3e partie des applications-obtient l'identifiant du locataire? BTW, je suis ouvert à une meilleure façon de gérer tout cela, sauf le plongement du locataire-id dans l'URL; cette décision est assez gravée dans la pierre en ce moment. Merci.

Merci.

Était-ce utile?

La solution

seule façon inverse afin que django est remplacé par ur_reverse est

django.core.urlresolvers.reverse = ur_reverse

ou si vous aimez décorateur sucre syntaxique

django.core.urlresolvers.reverse = ur_reverse_decorator(django.core.urlresolvers.reverse )

que je pas des conseils (et beaucoup crieront), à moins que vous n'êtes pas prêt à changer chaque utilisation de la marche arrière avec ur_reverse

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top