Temel URI'yi Python'da yazılmış bir Google AppEngine uygulamasında nasıl alabilirim? Webapp çerçevesini kullanıyorum.AppEngine'deki temel URI'yi nasıl alabilirim?
örn.
http://example.appspot.com/
Temel URI'yi Python'da yazılmış bir Google AppEngine uygulamasında nasıl alabilirim? Webapp çerçevesini kullanıyorum.AppEngine'deki temel URI'yi nasıl alabilirim?
örn.
http://example.appspot.com/
self.request.url
ayrıştırmak için uygun yolu normal bir ifade ile değil, Python standart kütüphanenin urlparse modülü ile:
import urlparse
...
o = urlparse.urlparse(self.request.url)
Nesne o
dizge değerli alanlarla ParseResult
sınıfının bir örneği olur o.scheme
(muhtemelen sizin durumunuzda http
;-) ve o.netloc
('example.appspot.com'
). Aynı modülden urlparse.urlunparse işlevini kullanarak dizelerin bir kısmını tekrar bir araya getirebilirsiniz, örn. s
bu durumda dize 'http://example.appspot.com'
size verecekti
s = urlparse.urlunparse((o.scheme, o.netloc, '', '', '', ''))
.
Sadece uygulama kimliğinizi bulmak istiyorsanız, geçerli URL'yi ayrıştırmadan environment'dan edinebilirsiniz. çevre değişkeni Ayrıca (Eğer, appspot.com üzerinde AUTH_DOMAIN
kalıp kalmadığını kontrol bildiririz) geçerli sürümü (CURRENT_VERSION_ID
), yetkilendirme alanını bulmak için kullanabilir APPLICATION_ID
ve çalıştırdığınız olup olmadığıdır yerel geliştirme sunucusu veya üretimde (SERVER_SOFTWARE
).
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]
düzenleme:AUTH_DOMAIN
özel alan adı, uygulama kimliğini içerecek şekilde gerek içerir.
Bu güncel sürümünü erişme veya olmasalar bile geçerli sürümün temel URL'sini dönecektir sen (URL-ayrıştırma yöntemlerinin aksine) http://current-version.latest.app_id.appspot.com
gibi
Bu, uygulamanın appspot'ta erişildiğini varsayar ve temel URL'niz bir Google Apps alanındaysa korkunç bir şekilde başarısız olur. – geoffspear
@Wooble, AUTH_DOMAIN öğesinin biti budur - appspot.com'da barındırılmamışsa, "AUTH_DOMAIN", barındırıldığı özel alan adıdır. –
Bir uygulama Google auth'u kullanabilir, ancak yine de başka bir alan adından sunulabilir; AUTH_DOMAIN envvar hala "gmail.com" olarak ayarlanacak – geoffspear
bir URL kullanarak geçerli sürümü ziyaret Ya da sadece kullanabilirsiniz eğer Örneğin, bu parçaları zaten sizin için ayıran self.request.host_url, self.request.host, vb. –