Django (1.5) baik-baik saja bagi saya, tetapi ketika saya menjalankan interpreter Python (Python 3) untuk memeriksa beberapa hal, saya mendapatkan kesalahan paling aneh ketika saya mencoba mengimpor - from django.contrib.auth.models import User
-
Traceback (most recent call last):
File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 36, in _setup
settings_module = os.environ[ENVIRONMENT_VARIABLE]
File "/usr/lib/python3.2/os.py", line 450, in __getitem__
value = self._data[self.encodekey(key)]
KeyError: b'DJANGO_SETTINGS_MODULE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/dist-packages/django/contrib/auth/models.py", line 8, in <module>
from django.db import models
File "/usr/local/lib/python3.2/dist-packages/django/db/__init__.py", line 11, in <module>
if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES:
File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 52, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 45, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES,
but settings are not configured. You must either define the environment
variable DJANGO_SETTINGS_MODULE or call settings.configure()
before accessing settings.
Bagaimana itu bisa dikonfigurasi dengan tidak benar, ketika berfungsi dengan baik di luar interpreter Python? Dalam pengaturan Django saya, DATABASES
pengaturannya adalah:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django_db', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'zamphatta',
'PASSWORD': 'mypassword91',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}
... bagaimana ini tidak terkonfigurasi dengan benar?
unset DJANGO_SETTINGS_MODULE
. Saya mengalami masalah di mana saya telah mengatur env var di .bashrcJawaban:
Anda tidak bisa menjalankan Python dan memeriksa berbagai hal, Django tidak tahu proyek apa yang ingin Anda kerjakan. Anda harus melakukan salah satu dari ini:
python manage.py shell
django-admin.py shell --settings=mysite.settings
(atau modul pengaturan apa pun yang Anda gunakan)DJANGO_SETTINGS_MODULE
variabel lingkungan di OS Anda kemysite.settings
(Ini dihapus dalam Django 1.6) Gunakan
setup_environ
dalam juru bahasa python:Secara alami, cara pertama adalah yang termudah.
sumber
setup_environ
dihapus di 1.6, tetapi--settings
harus berfungsi. Apakah Anda yakin pengaturan Anda lebih lanjutFirstBlog.settings
, dan tidak hanya disettings
dalam direktori saat ini?$ export DJANGO_SETTINGS_MODULE="my_project.settings"
DJANGO_SETTINGS_MODULE=(project directory name).settings
Di shell python Anda / ipython lakukan:
sumber
Apps aren't loaded yet.
Pada 2017 dengan django 1.11.5 dan python 3.6 ( dari komentar ini juga berfungsi dengan Python 2.7 ):
Di
.py
mana Anda meletakkan kode ini harus berada dalammysite
(orang tua)sumber
.py
harus ditempatkan di root , yang berarti itu bersama dengan manage.py. Bagaimana cara menempatkannya di dalam folder acak?if __name__ == "__main__":
itu tidak akan berfungsi dengan benar :)Pada Django 1.9, saya mencoba
django-admin runserver
dan mendapatkan kesalahan yang sama, tetapi ketika saya menggunakan,python manage.py runserver
saya mendapatkan hasil yang diinginkan. Ini dapat mengatasi kesalahan ini untuk banyak orang!sumber
Dalam kasus saya, saya mendapatkan ini ketika mencoba menjalankan tes Django melalui PyCharm. Saya pikir itu karena PyCharm tidak memuat pengaturan proyek Django awal, yaitu yang
manage.py shell
berjalan pada awalnya. Satu dapat menambahkannya ke awal skrip pengujian atau hanya menjalankan tes menggunakanmanage.py test
.Versi:
sumber
dalam kasus saya sendiri di Django 1.10.1 berjalan pada python2.7.11, saya mencoba untuk memulai menggunakan server
django-admin runserver
alih-alihmanage.py runserver
dalam direktori proyek saya.sumber
Untuk orang yang menggunakan IntelliJ, dengan pengaturan ini saya bisa melakukan query dari shell (di windows).
sumber