2010-09-12 23 views

उत्तर

5

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' देना होगा।

+3

या फिर आप इस्तेमाल कर सकते हैं , उदाहरण के लिए, self.request.host_url, self.request.host, आदि, जो पहले से ही इन भागों को आपके लिए विभाजित कर चुके हैं! –

2

यदि आप बस अपनी ऐप आईडी खोजना चाहते हैं, तो आप वर्तमान 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 की तरह एक यूआरएल का उपयोग कर वर्तमान संस्करण पर जाएँ (यूआरएल-पार्स तरीकों के विपरीत) अगर

+0

यह मानता है कि ऐप को ऐपस्पॉट पर एक्सेस किया जा रहा है, और यदि आपका बेस यूआरएल Google Apps डोमेन पर है तो बहुत असफल हो जाएगा। – geoffspear

+0

@Wooble यही है कि 'AUTH_DOMAIN' बिट क्या है - अगर इसे appspot.com पर होस्ट नहीं किया जा रहा है, तो' AUTH_DOMAIN' वह कस्टम डोमेन है जहां होस्ट किया गया है। –

+1

एक ऐप Google auth का उपयोग कर सकता है लेकिन फिर भी किसी अन्य डोमेन नाम से परोसा जाता है; AUTH_DOMAIN envvar अभी भी "gmail.com" पर सेट हो जाएगा – geoffspear

संबंधित मुद्दे

 संबंधित मुद्दे