AttributeError:'tuple'对象没有'rsplit'属性 Django
我刚接触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
时,输出是这样的:
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_STORAGE
和 DEFAULT_FILE_STORAGE
这两个设置。