पायथन में लिखे गए Google AppEngine ऐप में बेस यूआरआई कैसे प्राप्त कर सकता हूं? मैं वेबपैप ढांचे का उपयोग कर रहा हूँ।मैं AppEngine में बेस यूआरआई कैसे प्राप्त कर सकता हूं?
उदा।
http://example.appspot.com/
पायथन में लिखे गए Google AppEngine ऐप में बेस यूआरआई कैसे प्राप्त कर सकता हूं? मैं वेबपैप ढांचे का उपयोग कर रहा हूँ।मैं AppEngine में बेस यूआरआई कैसे प्राप्त कर सकता हूं?
उदा।
http://example.appspot.com/
self.request.url
पार्स करने के लिए उचित तरीके से एक नियमित अभिव्यक्ति के साथ नहीं है, लेकिन अजगर मानक पुस्तकालय के urlparse मॉड्यूल के साथ:
import urlparse
...
o = urlparse.urlparse(self.request.url)
वस्तु o
स्ट्रिंग-मान क्षेत्रों के साथ ParseResult
वर्ग का एक उदाहरण हो जाएगा जैसे o.scheme
(शायद http
;-) और o.netloc
('example.appspot.com'
आपके मामले में)। आप उसी मॉड्यूल से urlparse.urlunparse फ़ंक्शन के साथ कुछ स्ट्रिंग्स को फिर से एक साथ रख सकते हैं, उदा।
s = urlparse.urlunparse((o.scheme, o.netloc, '', '', '', ''))
जो आप s
में इस मामले में स्ट्रिंग 'http://example.appspot.com'
देना होगा।
यदि आप बस अपनी ऐप आईडी खोजना चाहते हैं, तो आप वर्तमान URL को पार्स किए बिना environment से प्राप्त कर सकते हैं। वातावरण चर APPLICATION_ID
आप भी इस का उपयोग कर सकते वर्तमान संस्करण (CURRENT_VERSION_ID
), प्रमाणन डोमेन (जो आपको बताते हैं कि आप, AUTH_DOMAIN
appspot.com पर चला रहे हैं जाएगा) लगता है और आप पर चल रहे हैं कि क्या है स्थानीय विकास सर्वर या उत्पादन में (SERVER_SOFTWARE
)।
तो पूर्ण आधार URL मिलता है, कुछ इस तरह की कोशिश करने के लिए:
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]
संपादित करें:AUTH_DOMAIN
कस्टम डोमेन, ऐप्लिकेशन आईडी शामिल करने की आवश्यकता होती है।
यह वर्तमान संस्करण के आधार URL भले ही आप वर्तमान संस्करण तक पहुँचने नहीं कर रहे हैं, या आप वापस आ जाएगी http://current-version.latest.app_id.appspot.com
की तरह एक यूआरएल का उपयोग कर वर्तमान संस्करण पर जाएँ (यूआरएल-पार्स तरीकों के विपरीत) अगर
यह मानता है कि ऐप को ऐपस्पॉट पर एक्सेस किया जा रहा है, और यदि आपका बेस यूआरएल Google Apps डोमेन पर है तो बहुत असफल हो जाएगा। – geoffspear
@Wooble यही है कि 'AUTH_DOMAIN' बिट क्या है - अगर इसे appspot.com पर होस्ट नहीं किया जा रहा है, तो' AUTH_DOMAIN' वह कस्टम डोमेन है जहां होस्ट किया गया है। –
एक ऐप Google auth का उपयोग कर सकता है लेकिन फिर भी किसी अन्य डोमेन नाम से परोसा जाता है; AUTH_DOMAIN envvar अभी भी "gmail.com" पर सेट हो जाएगा – geoffspear
या फिर आप इस्तेमाल कर सकते हैं , उदाहरण के लिए, self.request.host_url, self.request.host, आदि, जो पहले से ही इन भागों को आपके लिए विभाजित कर चुके हैं! –