Wie kann ich den Basis-URI in einer in Python geschriebenen Google AppEngine App abrufen? Ich benutze das Webapp-Framework.Wie kann ich den Basis-URI in AppEngine erhalten?
z.B.
http://example.appspot.com/
Wie kann ich den Basis-URI in einer in Python geschriebenen Google AppEngine App abrufen? Ich benutze das Webapp-Framework.Wie kann ich den Basis-URI in AppEngine erhalten?
z.B.
http://example.appspot.com/
Der richtige Weg self.request.url
zu analysieren ist nicht mit einem regulären Ausdruck, aber mit Python Standard urlparse Modul der Bibliothek:
import urlparse
...
o = urlparse.urlparse(self.request.url)
Objekt o
wird eine Instanz der ParseResult
Klasse mit String-Wert von Feldern sein wie o.scheme
(wahrscheinlich http
;-) und o.netloc
('example.appspot.com'
in Ihrem Fall). Sie können einige der Strings wieder zusammen mit der urlparse.urlunparse-Funktion aus dem gleichen Modul, z.B.
s = urlparse.urlunparse((o.scheme, o.netloc, '', '', '', ''))
, die Sie in s
die Zeichenfolge 'http://example.appspot.com'
in diesem Fall geben würde.
Wenn Sie nur Ihre App-ID finden möchten, können Sie diese von environment erhalten, ohne die aktuelle URL analysieren zu müssen. Die Umgebungsvariable ist APPLICATION_ID
Sie auch diese können Sie die aktuelle Version (CURRENT_VERSION_ID
), Auth Domain finden (was Sie wissen lassen, ob Sie sich auf appspot.com laufen lassen, AUTH_DOMAIN
) und ob Sie laufen auf der lokale Entwicklungsserver oder in Produktion (SERVER_SOFTWARE
).
So die volle Basis-URL zu erhalten, versuchen Sie so etwas wie diese:
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]
edit:AUTH_DOMAIN
enthält die benutzerdefinierte Domain, keine Notwendigkeit, den App-ID enthalten.
Dadurch wird die aktuelle Version der Basis-URL zurück, auch wenn Sie die aktuelle Version nicht zuzugreifst, oder wenn Sie die aktuelle Version einer URL wie http://current-version.latest.app_id.appspot.com
(im Gegensatz zu URL-Parsing-Verfahren)
Hierbei wird davon ausgegangen, dass auf die App über den Appspot zugegriffen wird und dass die Basis-URL in einer Google Apps-Domain entsetzlich ausfallen wird. – geoffspear
@Wooble das ist das 'AUTH_DOMAIN' Bit - wenn es nicht auf appspot.com gehostet wird, ist' AUTH_DOMAIN' die benutzerdefinierte Domäne, in der es gehostet wird. –
Eine App kann die Google-Authentifizierung verwenden, jedoch weiterhin von einem anderen Domainnamen geschaltet werden. Die Umgebungsvariable AUTH_DOMAIN wird weiterhin auf "gmail.com" gesetzt. – geoffspear
Oder Sie könnten nur verwenden, besuchen Sie mit zB self.request.host_url, self.request.host, etc, die bereits diese Teile für Sie aufgeteilt haben! –