2011-01-12 21 views
13

Tengo un problema al crear una vista URL en django. Me da este error (Ferrol es un objeto espacial):objeto django 'str' no se puede llamar

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 

Aquí está el código:

espacios/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')) 

urls.py principal

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')), 
) 

espacios/urls.py

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

espacios/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

¿Cómo es tu urls.py principal? El problema es probablemente allí. –

Respuesta

30

En sus espacios/urls.py presentar tiene que proporcionar ruta completa para ver método:

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

O así:

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

Está funcionando ahora. Olvidé poner el patrón (apps.spaces.views) antes de llamar a las funciones, ¡qué vergüenza! –

+1

@Oscar - si esto responde su pregunta - ¿podría marcarlo como aceptado? –

Cuestiones relacionadas