2013-07-29 1 views
12

Полностью новый для кодирования, извините за простые вопросы. Я получаю эту ошибку атрибута при запуске python manage.py collectstatic. Я редактирую settings.py. У меня Django 1.5.1 и Python 2.7.5. Любая помощь приветствуется и благодарит заранее (снова).AttributeError: объект 'tuple' не имеет атрибута 'startswith'

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 61, in isabs 
    return s.startswith('/') 
AttributeError: 'tuple' object has no attribute 'startswith' 

Теперь, конечно, я никогда не запутались с posixpath.py.

вот содержание settings.py (информация минус дб и такие):

MEDIA_ROOT = "os.path.join(os.path.dirname(os.path.dirname(__file___))", "static", "media" 

MEDIA_URL = '/media/' 

STATIC_ROOT = "os.path.join(os.path.dirname(os.path.dirname(__file__))", "static", "static-only" 

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    "os.path.join(os.path.dirname(os.path.dirname(__file__))", "static", "static", 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

SECRET_KEY = 'xxxxxxxxx' 

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
#  'django.template.loaders.eggs.Loader', 
) 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

ROOT_URLCONF = 'mvp_landing.urls' 

WSGI_APPLICATION = 'mvp_landing.wsgi.application' 

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(os.path.dirname(__file__)), "static", "templates", 
) 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    'django.contrib.admindocs', 
    'south', 
    'join', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 
+7

В моем случае у меня была ошибка копирования/вставки. Моя 'STATIC_ROOT =' закончилась запятой. – jozxyqk

ответ

11

Вы делаете это неправильно. Вы не должны превращать свой код в кавычки. Watch here how it should be

Это должно быть, как:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), "static") 
) 

Также он относится к настройкам MEDIA_ROOT и STATIC_ROOT.

+0

Спасибо за ваш ответ. Я попробовал это, и это сработало. Я все еще очень новый. Благодаря! –

2

Резюме

Если вы новичок в Django (как я) и запустить в эту проблему, я рекомендую смотреть на книгу двух ковшей Джанго, в частности, они имеют шаблон GitHub с хорошим расположение приложения here. В частности, вы хотите посмотреть на:

  1. их файл «base.py» под настройками, который имеет все конфигурации для «STATIC_ROOT», «MEDIA_ROOT» и т.д.
  2. Посмотрите, как их параметры спичек их папку структура (смотри ниже) twoscoopsrecommendsettings

Octotree (необязательно)

в качестве примечания, если вы используете GitHub в качестве системы управления, я HIGHL y рекомендую получить расширение Chrome под названием Octotree here. Это позволяет просматривать макет папки любого репозитория GitHub.

octotree extension

4

@ Крис

STATIC_ROOT и MEDIA_ROOTS абсолютные пути, и они не могут быть кортежи так нет «» (запятая) допускается, Так упомянуть абсолютный путь, как «/ ваш/статический/файл/абсолютный/путь»

Надеется, что это поможет :)

3
STATIC_ROOT = os.path.join(BASE_DIR, "static_in_pro","static_root"), 

Пожалуйста Удалить запятая в конце статического корня

STATIC_ROOT = os.path.join(BASE_DIR, "static_in_pro","static_root")