无法在用户模型中导入restframework.generics

bjp0bcyl  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(520)

在我们的代码库中,如果我们 import rest_framework.generics 我们的用户类(即我们的 BaseUserManager ),我们得到的错误如下所示:

  1. File "/usr/local/lib/python3.9/site-packages/django/apps/config.py", line 178, in get_model
  2. return self.models[model_name.lower()]
  3. KeyError: 'acmeuser'
  4. During handling of the above exception, another exception occurred:
  5. Traceback (most recent call last):
  6. File "/usr/local/lib/python3.9/site-packages/django/contrib/auth/__init__.py", line 157, in get_user_model
  7. return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
  8. File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 211, in get_model
  9. return app_config.get_model(model_name, require_ready=require_ready)
  10. File "/usr/local/lib/python3.9/site-packages/django/apps/config.py", line 180, in get_model
  11. raise LookupError(
  12. LookupError: App 'acme_api' doesn't have a 'AcmeUser' model.
  13. During handling of the above exception, another exception occurred:
  14. Traceback (most recent call last):
  15. File "/Users/topher/colony/platform/acme-api/manage.py", line 46, in <module>
  16. main()
  17. File "/Users/topher/colony/platform/acme-api/manage.py", line 38, in main
  18. execute_from_command_line(sys.argv)
  19. File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
  20. utility.execute()
  21. File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 377, in execute
  22. django.setup()
  23. File "/usr/local/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
  24. apps.populate(settings.INSTALLED_APPS)
  25. File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 114, in populate
  26. app_config.import_models()
  27. File "/usr/local/lib/python3.9/site-packages/django/apps/config.py", line 211, in import_models
  28. self.models_module = import_module(models_module_name)
  29. File "/usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
  30. return _bootstrap._gcd_import(name[level:], package, level)
  31. File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  32. File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  33. File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  34. File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  35. File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  36. File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  37. DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): o385127.ingest.sentry.io:443
  38. File "/Users/topher/colony/platform/acme-api/acme_api/models.py", line 1, in <module>
  39. from .model.acme_user import AcmeUser
  40. File "/Users/topher/colony/platform/acme-api/acme_api/model/acme_user.py", line 20, in <module>
  41. import rest_framework.generics
  42. File "/usr/local/lib/python3.9/site-packages/rest_framework/generics.py", line 9, in <module>
  43. from rest_framework import mixins, views
  44. File "/usr/local/lib/python3.9/site-packages/rest_framework/views.py", line 17, in <module>
  45. from rest_framework.schemas import DefaultSchema
  46. File "/usr/local/lib/python3.9/site-packages/rest_framework/schemas/__init__.py", line 33, in <module>
  47. authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES,
  48. File "/usr/local/lib/python3.9/site-packages/rest_framework/settings.py", line 220, in __getattr__
  49. val = perform_import(val, attr)
  50. File "/usr/local/lib/python3.9/site-packages/rest_framework/settings.py", line 168, in perform_import
  51. return [import_from_string(item, setting_name) for item in val]
  52. File "/usr/local/lib/python3.9/site-packages/rest_framework/settings.py", line 168, in <listcomp>
  53. return [import_from_string(item, setting_name) for item in val]
  54. File "/usr/local/lib/python3.9/site-packages/rest_framework/settings.py", line 177, in import_from_string
  55. return import_string(val)
  56. File "/usr/local/lib/python3.9/site-packages/django/utils/module_loading.py", line 17, in import_string
  57. module = import_module(module_path)
  58. File "/usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
  59. return _bootstrap._gcd_import(name[level:], package, level)
  60. File "/Users/topher/Library/Python/3.9/lib/python/site-packages/rest_framework_simplejwt/authentication.py", line 6, in <module>
  61. from .state import User
  62. File "/Users/topher/Library/Python/3.9/lib/python/site-packages/rest_framework_simplejwt/state.py", line 6, in <module>
  63. User = get_user_model()
  64. File "/usr/local/lib/python3.9/site-packages/django/contrib/auth/__init__.py", line 161, in get_user_model
  65. raise ImproperlyConfigured(
  66. django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'acme_api.AcmeUser' that has not been installed
  67. Sentry is attempting to send 0 pending error messages
  68. Waiting up to 2 seconds
  69. Press Ctrl-C to quit

对于这个稍微模糊的错误消息,您可以假设 settings.py 包含以下行: AUTH_USER_MODEL = 'acme_api.AcmeUser' 目前,我们通过将import语句放在方法定义中来“解决”这个问题,但似乎必须有更好的方法来实现这一点。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题