मैं एक ऐप बना रहा हूं जो सामूहिक.लेड (ट्रंक) का उपयोग करके बाह्य संबंध डेटाबेस में कुछ डेटा पूछता है। उपयोगकर्ता एक कस्टम प्लोन कंट्रोल पैनल टूल में डेटाबेस कनेक्शन सेटिंग्स को संशोधित कर सकता है (मैंने एस्पेल की व्यावसायिक प्लोन डेवलपमेंट बुक में उदाहरण का पालन किया)। डेटाबेस सेटिंग्स इस तरह से पूछताछ की जाती है।घटक लुकअप स्टार्टअप समय पर रजिस्ट्री से पूछताछ करते समय त्रुटि
मेरे उत्पाद के आधार configure.zcml डेटाबेस के लिए एक उपयोगिता सेट:
<include package="plone.app.registry" />
<include package="collective.lead" />
<i18n:registerTranslations directory="locales" />
<utility
provides="collective.lead.interfaces.IDatabase"
factory=".dbsettings.CalculatorDatabase"
name="test.calc.db"
/>
dbsettings.py है:
from zope.component import getUtility
from plone.registry.interfaces import IRegistry
class CalculatorDatabase(Database):
@property
def _url(self):
registry = getUtility(IRegistry)
settings = registry.forInterface(IDatabaseSettings)
return URL(
drivername=settings.drivername,
username=settings.username,
password=settings.password,
host=settings.hostname,
port=settings.port,
database=settings.database,
)
इस क्रम में एक ComponentLookupError अपवाद को जन्म देती है:
File "/home/zope/envs/test-web/src/test.calc/test/calc/dbsettings.py", line 38, in _url
registry = getUtility(IRegistry)
File "/home/zope/envs/test-web/eggs/zope.component-3.7.1-py2.6.egg/zope/component/_api.py", line 171, in getUtility
raise ComponentLookupError(interface, name)
zope.configuration.config.ConfigurationExecutionError: <class 'zope.component.interfaces.ComponentLookupError'>: (<InterfaceClass plone.registry.interfaces.IRegistry>, '')
in:
File "/home/zope/envs/test-web/src/test.calc/test/calc/configure.zcml", line 26.2-30.6
<utility
provides="collective.lead.interfaces.IDatabase"
factory=".dbsettings.CalculatorDatabase"
name="test.calc.db"
/>
रनटाइम पर रजिस्ट्री क्यों नहीं मिली है? मैं क्या गलत कर रहा हूं?
धन्यवाद।
धन्यवाद। यह सबसे साफ समाधान है। – zedr