2013-04-10 10 views
5

मैं लाटेक्स-आइश भाषा के लिए पार्सर उत्पन्न करने के लिए yapps का उपयोग करता हूं (उदाहरण के लिए \begin{itemize} जैसे <ul> -Tags) को पिरामिड के भीतर अनुवाद करने के लिए। एक कमांड (यानी \ref{SOMEID}) route_url (या route_path) के कॉल के माध्यम से एक मार्ग बनाना चाहिए और आईडी को पास कर देना चाहिए। चूंकि यह कॉल कोड में गहरा होता है जो yapps द्वारा उत्पन्न किया गया था और व्याकरण जिसे मैंने परिभाषित किया था, मुझे कोई अनुरोध ऑब्जेक्ट पास करने की कोई संभावना नहीं दिखाई देती है।पिरामिड: अनुरोध ऑब्जेक्ट के बिना path_url का निर्माण

क्या कोई वैश्विक अनुरोध वस्तु है? या, चूंकि मुझे लगता है कि मुझे इसका उपयोग नहीं करना चाहिए, क्या अनुरोध ऑब्जेक्ट के बिना एक मार्ग (जो पैरामीटर पर निर्भर करता है) बनाने की संभावना है?

उत्तर

7

route_url दोनों अनुरोध और एक रजिस्ट्री (request.registry) की आवश्यकता है। यह अनुरोध के सापेक्ष यूआरएल उत्पन्न करता है, और यह रजिस्ट्री से सभी मार्गों और अन्य सेटिंग्स की सूची तक पहुंचता है। इस प्रकार, आप आवश्यक पैरामीटर के साथ एक डमी अनुरोध उत्पन्न करना चाहिए। उदाहरण के लिए:

from pyramid.request import Request 

request = Request.blank('/', base_url='https://example.com/prefix') 
request.registry = config.registry 

अब आप कहीं भी इस अनुरोध को स्टोर कर सकते हैं, यह आपकी साइट के बारे में सब कुछ का प्रतिनिधित्व करने के लिए तैयार है: होस्टनाम/पोर्ट (example.com:443), उपसर्ग आपके ऐप्लिकेशन (/prefix), URI योजना पर लगाया गया है (https)।

यदि आपको अपने कोड में यह गहराई से उतरने की आवश्यकता है तो आपको इसे वैश्विक बनाना होगा या इसे आपके द्वारा उपलब्ध कुछ संदर्भ/रजिस्ट्री से संलग्न करना होगा, लेकिन मैंने जो दिखाया है वह यह है कि आप कैसे अनुरोध करें आवश्यकता होती है।

+0

आपको बहुत धन्यवाद, मुझे रिक्त कार्य नहीं पता था। मैंने रजिस्ट्री प्राप्त करने के लिए 'pyramid.threadlocal' से' get_current_registry() 'का उपयोग किया और फिर केवल 'path_path' को कॉल कर सकता था। – born

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