AttributeError:'tuple'对象没有'rsplit'属性 Django

5 投票
3 回答
10507 浏览
提问于 2025-04-18 02:08

我刚接触Django,运行命令python manage.py collectstatic后出现了这个错误。

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/management/__init__.py", line 76, in load_command_class
    return module.Command()
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/contrib/staticfiles/management/commands/collectstatic.py", line 58, in __init__
    self.storage.path('')
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/utils/functional.py", line 213, in inner
    self._setup()
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/contrib/staticfiles/storage.py", line 311, in _setup
    self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/files/storage.py", line 282, in get_storage_class
    return import_by_path(import_path or settings.DEFAULT_FILE_STORAGE)
  File "/Users/bradfordli/Development/django_tutorial/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/utils/module_loading.py", line 16, in import_by_path
    module_path, class_name = dotted_path.rsplit('.', 1)
AttributeError: 'tuple' object has no attribute 'rsplit'

当我运行runserver时,输出是这样的:

http://pastebin.com/2bh7h7gY

3 个回答

0

我在使用djoser进行Django Rest Framework的身份验证时遇到了这个错误。只需要把

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        (...)
    ),
}

改成

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
     
    ),
}
1

我也遇到过同样的问题。

我从django restframework的文档中复制了以下设置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        (...)
    ),
} 

到我的项目里。然后我把上面提到的设置中的(...)去掉了,现在可以正常工作了。请在复制代码时小心一点 ))

其实正确的做法是:

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
        ),
    }

在这个情况下,(...)的意思是“把你已有的代码”放在它前面。

20

你在 settings.py 文件中的某个设置是一个元组,或者有一个多余的逗号,这样就把它变成了元组,但其实它不应该是元组。它应该是一个字符串。

我建议你先检查一下 STATICFILES_STORAGEDEFAULT_FILE_STORAGE 这两个设置。

撰写回答