How to get User in ipython – Django

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!

原文链接:How to get User in ipython – Django

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容