2011-01-12 29 views
13

Mam problem z tworzeniem widoku adresu URL w django. To daje mi ten błąd (Ferrol to obiekt kosmiczny):Obiekt django 'str' nie jest wywoływalny

TypeError at /spaces/ferrol/ 
'str' object is not callable 
Request Method: GET 
Request URL: http://localhost:8000/spaces/ferrol/ 
Django Version: 1.2.3 
Exception Type: TypeError 
Exception Value:  
'str' object is not callable 
Exception Location: /usr/local/lib/python2.6/dist-packages/Django-1.2.3-py2.6.egg/django/core/handlers/base.py in get_response, line 100 

Oto kod:

przestrzenie/models.py

class Space(models.Model): 

""" 
Basic spaces model. 
""" 
name = models.CharField(_('Name'), max_length=100, unique=True) 
description = models.TextField(_('Description')) 
date = models.DateTimeField(auto_now_add=True) 

logo = models.ImageField(upload_to='spaces/logos', 
         verbose_name=_('Logotype')) 
banner = models.ImageField(upload_to='spaces/banners', 
          verbose_name=_('Banner')) 

Główne urls.py

urlpatterns = patterns('', 

# Django administration 
(r'^admin/', include(admin.site.urls)), 

(r'^spaces/', include('apps.spaces.urls')), 

(r'^static/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': 'static'}), 

) 

if 'e_cidadania.apps.rosetta' in settings.INSTALLED_APPS: 
urlpatterns += patterns('', 
    url(r'^rosetta/', include('apps.rosetta.urls')), 
) 

spacje/urls.py

urlpatterns = patterns('', 
    # Spaces 
    (r'^(?P<space_name>[-\w\./\s]+)/', 'view_space_index'), 
) 

przestrzenie/views.py

def view_space_index(request, space_name): 

""" 
Show the index page for the requested space. 
""" 
place = get_object_or_404(Space, name=space_name) 

return object_detail(request, 
        queryset = Space.objects.all(), 
        object_id = place.id, 
        template_name = 'spaces/index.html', 
        template_object_name = 'get_place') 
+0

Jak wygląda Twój główny adres url.py? Prawdopodobnie jest problem. –

Odpowiedz

30

W swoich przestrzeniach/urls.py pliku musisz podać pełną ścieżkę do przeglądania metoda:

urlpatterns = patterns('', 
    # Spaces 
    (r'^(?P<space_name>[-\w\./\s]+)/', 'spaces.views.view_space_index'), 
) 

Albo tak:

urlpatterns = patterns('spaces.views', 
    # Spaces 
    (r'^(?P<space_name>[-\w\./\s]+)/', 'view_space_index'), 
) 
+1

Teraz działa. Zapomniałem wstawić wzorzec (apps.spaces.views) przed wywołaniem funkcji, wstydź się na mnie! –

+1

@Oscar - jeśli to odpowiedziałeś na twoje pytanie - czy możesz oznaczyć je jako zaakceptowane? –