AttributeError:“元组”对象没有属性“startswith”

Posted

技术标签:

【中文标题】AttributeError:“元组”对象没有属性“startswith”【英文标题】:AttributeError: 'tuple' object has no attribute 'startswith' 【发布时间】:2013-07-29 16:14:06 【问题描述】:

对编码完全陌生,对于简单的问题,我们深表歉意。运行python manage.py collectstatic 时出现此属性错误。我正在编辑settings.py。我有 Django 1.5.1 和 Python 2.7.5。任何帮助表示赞赏并提前(再次)感谢。

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

【问题讨论】:

就我而言,我遇到了复制/粘贴错误。我的STATIC_ROOT= 以逗号结尾。 【参考方案1】:

你做错了。你不应该把你的代码用引号引起来。 Watch here how it should be

应该是这样的:

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

它也属于您的MEDIA_ROOTSTATIC_ROOT 设置。

【讨论】:

感谢您的回复。我确实试过这个,它奏效了。我还是很新。谢谢!【参考方案2】:

@克里斯

STATIC_ROOT 和 MEDIA_ROOTS 是绝对路径,它们不能是元组,因此不允许使用“,”(逗号), 因此,将绝对路径称为“/your/static/file/absolute/path”

希望这会有所帮助:)

【讨论】:

【参考方案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")

【讨论】:

【参考方案4】:

总结

如果您是 Django 新手(像我一样)并遇到此问题,我建议您阅读《Django 的两个独家新闻》一书,特别是他们有一个 GitHub 模板和一个很好的应用程序布局here。特别是,您要查看:

    settings下他们的'base.py'文件,里面有'STATIC_ROOT'、'MEDIA_ROOT'等的所有配置。 查看他们的设置如何匹配他们的文件夹结构(见下文)

八叉树(可选)

附带说明,如果您使用 GitHub 作为源代码控制,我强烈建议您使用这个名为 Octotree 的 Chrome 扩展程序 here。这使您可以查看任何 GitHub 存储库的文件夹布局。

【讨论】:

以上是关于AttributeError:“元组”对象没有属性“startswith”的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“元组”对象在 pyspark 中没有属性“startswith”

AttributeError:当向 Pytorch LSTM 网络提供输入时,“元组”对象没有属性“dim”

model.fit AttributeError:“元组”对象没有属性“形状”

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:'list' 对象没有属性 'size'