2016-04-13 4 views
5

मुझे यह अपवाद क्यों मिलता है?AppRegistryNotReady: आलसी format_html()?

Traceback (most recent call last): 
    File "/path1/myapp-isu/myapp_isu/tests/unit/views/test_view_isu.py", line 8, in <module> 
    from myapp_isu.search_form import ISUSearchForm 
    File "/path1/myapp-isu/myapp_isu/search_form.py", line 87, in <module> 
    class ISUSearchForm(forms.Form): 
    File "/path1/myapp-isu/myapp_isu/search_form.py", line 108, in ISUSearchForm 
    foo_filter=forms.ModelChoiceField(FooFilter.objects.all(), label=format_html('<a href="%s">%s</a>', reverse_lazy('foo-filter'), FooFilter._meta.verbose_name)) 
    File "/path1/dt/dt/utils/templateutils.py", line 127, in reverse 
    return urlresolvers.reverse(*args, **kwargs) 
    File "/path1/dt/dt/utils/urlresolverutils.py", line 49, in patched_reverse 
    base_url = orig_reverse(viewname, urlconf=urlconf, args=args, kwargs=kwargs, prefix=prefix, current_app=current_app) 
    File "/path2/django/core/urlresolvers.py", line 578, in reverse 
    return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) 
    File "/path2/django/core/urlresolvers.py", line 432, in _reverse_with_prefix 
    self._populate() 
    File "/path2/django/core/urlresolvers.py", line 284, in _populate 
    for pattern in reversed(self.url_patterns): 
    File "/path2/django/core/urlresolvers.py", line 401, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/path2/django/core/urlresolvers.py", line 395, in urlconf_module 
    self._urlconf_module = import_module(self.urlconf_name) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/path1/myapp-eins/myapp_eins/etc/rooturls.py", line 13, in <module> 
    admin.autodiscover() 
    File "/path2/django/contrib/admin/__init__.py", line 24, in autodiscover 
    autodiscover_modules('admin', register_to=site) 
    File "/path2/django/utils/module_loading.py", line 67, in autodiscover_modules 
    for app_config in apps.get_app_configs(): 
    File "/path2/django/apps/registry.py", line 137, in get_app_configs 
    self.check_apps_ready() 
    File "/path2/django/apps/registry.py", line 124, in check_apps_ready 
    raise AppRegistryNotReady("Apps aren't loaded yet.") 
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 

यह केवल होता है अगर मैं PyCharm के माध्यम से unittest कहते हैं, नहीं तो मैं खोल पर py.test का उपयोग करें।

मुझे लगता है कि reverse_lazy() आलसी नहीं है, क्योंकि यह format_html() में उपयोग किया जाता है। आलसी format_html() रखने का कोई तरीका?

संस्करण:

  • Django 1.8
  • Pycharm 5.0.4
+0

सुनिश्चित नहीं हैं, लेकिन मुझे लगता है PyCharm ठीक से बुला नहीं किया जा सकता Django परीक्षण धावक। परीक्षणों को चलाने के लिए Django को चीजों की एक गुच्छा की आवश्यकता होती है, मॉडल को लोड करने की आवश्यकता होती है, यूआरएल पैटर्न पार्स किए जाते हैं। इसी कारण से Django परीक्षण चलाने के लिए प्रबंधन कमांड 'manage.py test' का उपयोग करता है। यह संभव है कि PyCharm उस से अवगत नहीं है। –

+0

यदि आप PyCharm के माध्यम से विकास सर्वर चलाते हैं तो क्या आपको वही सटीक त्रुटि मिलती है? – alecxe

+0

इसके अलावा आप क्या PyCharm और Django संस्करण का उपयोग कर रहे हैं? धन्यवाद। – alecxe

उत्तर

1

चूंकि स्टैकट्रैस में url_patterns जैसी चीजें हैं, मुझे लगता है कि DJANGO_SETTINGS_MODULE सही ढंग से सेट है।

लेकिन, आपको अभी भी कुछ और चलाने से पहले django.setup() पर कॉल करने की आवश्यकता है।

import django 
django.setup() 

मेरे लिए, यह त्रुटि संदेश दूर हो गया।

0

मैं कुछ PyCharm, अपने आप को उपयोग करने में समस्या हुई है, और मैं मान लेंगे आप समुदाय का उपयोग कर रहे संस्करण (जो मैं उपयोग कर रहा हूं)।

यदि ऐसा है, तो समस्या बहुत संभावना है कि आप django के लिए ठीक से कॉन्फ़िगर नहीं हैं। आप शायद कुछ हैक्स के साथ इसे ठीक कर सकते हैं जो इसके लिए काम कर सकता है।

मैं बंद this. साथ (आयात करने Django Django सांत्वना सुनिश्चित करने के लिए चलाया जाता है) शुरू कर दूं

तो शायद this.

वहाँ भी है इस: चेक "विन्यास संपादित करें" परीक्षण कर रहे हैं के तहत चल रहा है, और पर्यावरण चर के लिए DJANGO_SETTINGS_MODULE=<app-name-here>.settings जोड़ें।

0

तो ऊपर के सभी विफल रहता है, अपने रूप को प्रारंभ करने और निर्माता में आयात करने का प्रयास करें:

class ISUSearchForm(...): 

    ... 

    foo_filter = forms.Field() 

    ... 

    def __init__(*args, **kwargs) 

     from ... import reverse_lazy 
     from ... import FooFilter 

     self.fields['foo_filter'] = \ 
     forms.ModelChoiceField(
      FooFilter.objects.all(), 
      label=format_html(
      '<a href="%s">%s</a>', 
      reverse_lazy('foo-filter'), 
      FooFilter._meta.verbose_name 
     ) 
     ) 

     super().__init__(*args, **kwargs) 

त्रुटि सटीक import अनुक्रम अलग परीक्षण धावक और द्वारा किया जाता के कारण हो सकता तथ्य यह है कि आप अपने फॉर्म को कस्टमाइज़ करने के लिए केवल कक्षा चर का उपयोग करते हैं।

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