Comment puis-je obtenir l'URI de base dans une application Google AppEngine écrite en Python? J'utilise le framework webapp.Comment puis-je obtenir l'URI de base dans AppEngine?
par exemple.
http://example.appspot.com/
Comment puis-je obtenir l'URI de base dans une application Google AppEngine écrite en Python? J'utilise le framework webapp.Comment puis-je obtenir l'URI de base dans AppEngine?
par exemple.
http://example.appspot.com/
La bonne façon d'analyser self.request.url
est pas une expression régulière, mais avec le module de bibliothèque standard Python urlparse:
import urlparse
...
o = urlparse.urlparse(self.request.url)
objet o
sera une instance de la classe ParseResult
avec des champs de type chaîne comme o.scheme
(probablement http
;-) et o.netloc
('example.appspot.com'
dans votre cas). Vous pouvez à nouveau regrouper certaines chaînes avec la fonction urlparse.urlunparse du même module, par ex.
s = urlparse.urlunparse((o.scheme, o.netloc, '', '', '', ''))
qui vous donnera en s
la chaîne 'http://example.appspot.com'
dans ce cas.
Si vous voulez simplement trouver votre identifiant d'application, vous pouvez l'obtenir à partir du environment sans avoir à analyser l'adresse URL actuelle. La variable d'environnement est APPLICATION_ID
Vous pouvez également l'utiliser pour trouver la version actuelle (CURRENT_VERSION_ID
), domaine auth (qui vous permettra de savoir si vous êtes en cours d'exécution sur appspot.com, AUTH_DOMAIN
) et si vous êtes en cours d'exécution sur le serveur de développement local ou en production (SERVER_SOFTWARE
).
Donc, pour obtenir l'URL complète de base, essayez quelque chose comme ceci:
import os
def get_base_url():
if os.environ[AUTH_DOMAIN] == "gmail.com":
app_id = os.environ[APPLICATION_ID]
return "http://" + app_id + ".appspot.com"
else:
return "http://" + os.environ[AUTH_DOMAIN]
modifier:AUTH_DOMAIN
contient le domaine personnalisé, pas besoin d'inclure l'ID d'application.
Ceci renvoie l'URL de base de la version actuelle, même si vous n'êtes pas accéder à la version actuelle, ou si vous visitez la version actuelle en utilisant une URL comme http://current-version.latest.app_id.appspot.com
(contrairement aux méthodes URL parsing)
Cela suppose que l'application est en cours d'exécution sur appspot, et échouera horriblement si votre URL de base se trouve sur un domaine Google Apps. – geoffspear
@Wooble c'est ce que le bit 'AUTH_DOMAIN' est - s'il n'est pas hébergé sur appspot.com, le' AUTH_DOMAIN' est le domaine personnalisé où il est hébergé. –
Une application peut utiliser Google auth mais être servie à partir d'un autre nom de domaine; l'envvar AUTH_DOMAIN sera toujours défini sur "gmail.com" – geoffspear
Ou vous pouvez simplement utiliser , par exemple, self.request.host_url, self.request.host, etc, qui ont déjà ces parties séparées pour vous! –