Question

Comment travailler avec un sous-domaine dans le moteur d'applications Google (python).

Je veux obtenir la première partie du domaine et prendre des mesures (gestionnaire).

Exemple:
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; produit.exemple.com - > envoyez-le au gestionnaire de produits
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; utilisateur.exemple.com - > envoyez-le au gestionnaire d'utilisateurs

En fait, en utilisant le chemin virtuel, j'ai ce code:

  application = webapp.WSGIApplication(
    [('/', IndexHandler),
     ('/product/(.*)', ProductHandler),
     ('/user/(.*)', UserHandler)
  ]
Était-ce utile?

La solution

WSGIApplication n'est pas capable de routage basé sur le domaine. Au lieu de cela, vous devez créer une application distincte pour chaque sous-domaine, comme suit:

applications = {
  'product.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST']])

if __name__ == '__main__':
  main()

Vous pouvez également écrire votre propre sous-classe WSGIApplication qui sait comment gérer plusieurs hôtes.

Autres conseils

J'ai aimé l'idée de Nick mais j'avais un problème légèrement différent. Je voulais faire correspondre un sous-domaine spécifique pour le traiter un peu différemment, mais tous les autres sous-domaines doivent être gérés de la même manière. Voici donc mon exemple.

import os

def main():
   if (os.environ['HTTP_HOST'] == "sub.example.com"):
      application = webapp.WSGIApplication([('/(.*)', OtherMainHandler)], debug=True)
   else:
      application = webapp.WSGIApplication([('/', MainHandler),], debug=True)

   run_wsgi_app(application)


if __name__ == '__main__':
   main()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top