DEV Community

loading...

How to get User in ipython - Django

serhatteker profile image Serhat Teker Originally published at tech.serhatteker.com on ・2 min read

Problem

You are trying to get User Model in your Django app but getting ImproperlyConfigured error instead.

Verbose mode of the error says:

ImproperlyConfigured: Requested setting AUTH_USER_MODEL, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Your workflow would be like below:

(.venv) ~/yadrta $ ipython
Python 3.8.1 (default, Feb 12 2020, 16:30:11)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from django.contrib.auth import get_user_model

In [2]: User = get_user_model()
---------------------------------------------------------------------------
ImproperlyConfigured                      Traceback (most recent call last)
<ipython-input-2-6968e3c2733c> in <module>
----> 1 User = get_user_model()

~/yadrta/.venv/lib/python3.8/site-packages/django/contrib/auth/__init__.py in get_user_model()
    155     """
    156     try:
--> 157         return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
    158     except ValueError:
    159         raise ImproperlyConfigured("AUTH_USER_MODEL must be of the form 'app_label.model_name'")

~/yadrta/.venv/lib/python3.8/site-packages/django/conf/__init__.py in __getattr__(self, name)
     81         """Return the value of a setting and cache it in self.__dict__."""
     82         if self._wrapped is empty:
---> 83             self._setup(name)
     84         val = getattr(self._wrapped, name)
     85         self.__dict__[name] = val

~/yadrta/.venv/lib/python3.8/site-packages/django/conf/__init__.py in _setup(self, name)
     62         if not settings_module:
     63             desc = ("setting %s" % name) if name else "settings"
---> 64             raise ImproperlyConfigured(
     65                 "Requested %s, but settings are not configured. "
     66                 "You must either define the environment variable %s "

ImproperlyConfigured: Requested setting AUTH_USER_MODEL, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

In [3]:
Enter fullscreen mode Exit fullscreen mode

Solution

You should use IPython in django shell. Just run:

$ python manage.py shell -i ipython
Enter fullscreen mode Exit fullscreen mode

You can also look at this post: How to Run Django Shell in Python for detail.

All done!

Discussion (0)

pic
Editor guide