2016-08-30 3 views
2

Ich versuche, das Django-Projekt mit diesem Befehl auszuführen.Python-Fehler AttributeError: 'str' Objekt hat kein Attribut 'setdefault'

python manage.py runserver 8080 

Aber jedes Mal, wenn ich versuche zu laufen, habe ich einen solchen Fehler gesehen.

Traceback (most recent call last): 
File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
utility.execute() 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute 
django.setup() 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/__init__.py", line 18, in setup 
apps.populate(settings.INSTALLED_APPS) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate 
app_config.import_models(all_models) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models 
self.models_module = import_module(models_module_name) 
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
__import__(name) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/contrib/auth/models.py", line 4, in <module> 
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/contrib/auth/base_user.py", line 49, in <module> 
class AbstractBaseUser(models.Model): 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/db/models/base.py", line 108, in __new__ 
new_class.add_to_class('_meta', Options(meta, app_label)) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/db/models/base.py", line 307, in add_to_class 
value.contribute_to_class(cls, name) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/db/models/options.py", line 263, in contribute_to_class 
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/db/__init__.py", line 36, in __getattr__ 
return getattr(connections[DEFAULT_DB_ALIAS], item) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/db/utils.py", line 209, in __getitem__ 
self.ensure_defaults(alias) 
File "/Users/admin/.virtualenvs/myprojectname/lib/python2.7/site-packages/django/db/utils.py", line 181, in ensure_defaults 
conn.setdefault('ATOMIC_REQUESTS', False) 

AttributeError: 'str' object has no attribute 'setdefault' 

Ich versuchte python2 (python2.7.11) und python3 (python3.5.1) mit virtualenvwrapper. Ich denke, es ist nicht der Fehler der Projektquelle. aber etwas in der Umgebung Konfiguration verpasst. Aber ich kann nicht herausfinden, was das Problem ist. Bitte helfen Sie mir, es zu beheben.

Vielen Dank im Voraus.

+0

Bitte zeigen Sie Ihre DATABASES-Einstellung an. Irgendwo hast du eine Zeichenfolge, wo du ein Wörterbuch haben solltest. –

+0

Ich versuche Server auf lokalen und SQLite ausführen. – Softalent

+0

Ich kann Ihnen nicht helfen, es sei denn, Sie zeigen Ihre DATABASES-Einstellung an. –

Antwort

5

Jedes Element im DATABASES-Diktat muss selbst ein Diktat sein. Sie haben den Standardeintrag überschrieben, um nur eine Zeichenfolge zu sein.

Da Sie sqlite3 und die Standard-Datenbanknamen verwenden, sollten Sie nur auf die ursprüngliche Version der Einstellung zurück:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 
+0

Danke. Sie haben es geschafft. – Softalent

+0

Vergessen Sie nicht, die Antwort zu akzeptieren, wenn es Ihr Problem gelöst hat. –

+0

Entschuldigung, ich habe vergessen, es zu überprüfen. Vielen Dank für Ihre Hilfe! – Softalent

0

Es ist besser, wenn Sie uns Ihre settings.py zeigen zu überprüfen, ob es in Ordnung ist .

Denken Sie daran, python3 anstelle von python zu verwenden. Manchmal habe ich aus diesem Grund seltsame Fehler bekommen.

python3 manage.py runserver 8080

Verwandte Themen