我在Django中创建URL视图时遇到问题。它给了我这个错误(ferrol是一个Space对象):
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
这是代码:
spaces / 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'))
Main 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')), )
spaces / urls.py
urlpatterns = patterns('', # Spaces (r'^(?P<space_name>[-\w\./\s]+)/', 'view_space_index'), )
spaces / 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')
在你的spaces / urls.py文件中,你必须提供查看方法的完整路径:
urlpatterns = patterns('', # Spaces (r'^(?P<space_name>[-\w\./\s]+)/', 'spaces.views.view_space_index'), )
或像这样:
urlpatterns = patterns('spaces.views', # Spaces (r'^(?P<space_name>[-\w\./\s]+)/', 'view_space_index'), )