Ошибка: «можно объединить кортеж (не« список ») для кортежа» в URL, Django - PullRequest
2 голосов
/ 27 сентября 2011

В моих URL есть ошибка:

TypeError в / может только объединить кортеж (не "список") в кортеж

Не могу получитьчто я сделал не такГде находится список?

from django.conf import settings

from django.conf.urls.defaults import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = ('googleapi.apiapp.views',
    (r'^$', 'first_view'),
)

urlpatterns += patterns('',
    # Uncomment the admin/doc line below to enable admin documentation:
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),

    # Static files url.
    (r'^site_media/media/(?P<path>.*)$', 'django.views.static.serve',
                                   {'document_root': settings.MEDIA_ROOT}),
    (r'^site_media/static/(?P<path>.*)$', 'django.views.static.serve',
                                {'document_root': settings.STATIC_ROOT}),
)

Конфигурация Django

Traceback:

File "/home/i159/Env/googleapi/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
  101.                             request.path_info)
File "/home/i159/Env/googleapi/lib/python2.6/site-packages/django/core/urlresolvers.py" in resolve
  250.             for pattern in self.url_patterns:
File "/home/i159/Env/googleapi/lib/python2.6/site-packages/django/core/urlresolvers.py" in _get_url_patterns
  279.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/i159/Env/googleapi/lib/python2.6/site-packages/django/core/urlresolvers.py" in _get_urlconf_module
  274.             self._urlconf_module = import_module(self.urlconf_name)
File "/home/i159/Env/googleapi/lib/python2.6/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/home/i159/workspace/apiroot/googleapi/../googleapi/urls.py" in <module>
  24.                                     {'document_root': settings.STATIC_ROOT}),

Exception Type: TypeError at /
Exception Value: can only concatenate tuple (not "list") to tuple

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

Ошибка в значительной степени описывает вашу проблему. Вы пропускаете вызов patterns() в вашем первом определении urlpatterns.

1 голос
/ 27 сентября 2011

TypeError в / может только объединить кортеж (не "список") в кортеж

Это означает именно то, что говорится. Жалуется на urlpatterns += patterns(...). += пытается соединить (связать) две вещи. urlpatterns это кортеж. Значение, возвращаемое patterns(...), является списком. Вы не можете смешивать их для объединения.

Чтобы исправить это, вы должны сначала решить, хотите ли вы в качестве кортежа или списка в качестве результата (объединение двух кортежей дает кортеж, а объединение двух списков - список), а затем исправить одну или другую сторону соответственно.

В вашем случае вы, очевидно, хотите список. Значение, которое вы присваиваете urlpatterns, сначала выглядит как набор аргументов для patterns(). Простое объяснение, как указывает @patrys, заключается в том, что вы имели в виду (и забыли) вызвать функцию здесь. Это даст вам список, к которому вы сможете добавить (объединить) список из второго вызова.

Обратите внимание, что вы также можете сделать все это за один раз: urlpatterns = patterns(...) + patterns(...).

Где там список?

Результат вызовов patterns(), как объяснено выше (и также из документации, предположительно - я ничего не знаю о django, я просто хорош в отладке.)

...