(askcompany) C:\Users\user\yb\django_askcompany\askcompany\Scripts\_askcompany8>python manage.py runserver Watching for file changes with StatReloader Performing system checks... Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\settings.py", line 177, in import_from_string return import_string(val) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\module_loading.py", line 15, in cached_import import_module(module_path) File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework_jwt\authentication.py", line 4, in <module> from django.utils.encoding import smart_text ImportError: cannot import name 'smart_text' from 'django.utils.encoding' (C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\encoding.py) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner self.run() File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run self._target(*self._args, **self._kwargs) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\core\management\commands\runserver.py", line 124, in inner_run self.check(display_num_errors=True) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\core\management\base.py", line 438, in check all_issues = checks.run_checks( File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\core\checks\registry.py", line 77, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config return check_resolver(resolver) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver return check_method() File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\urls\resolvers.py", line 448, in check for pattern in self.url_patterns: File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\urls\resolvers.py", line 634, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\urls\resolvers.py", line 627, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\user\yb\django_askcompany\askcompany\Scripts\_askcompany8\_askcompany8\urls.py", line 7, in <module> path('accounts/', include('accounts.urls')), File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\urls\conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\user\yb\django_askcompany\askcompany\Scripts\_askcompany8\accounts\urls.py", line 1, in <module> from rest_framework.authtoken.views import obtain_auth_token File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\authtoken\views.py", line 6, in <module> from rest_framework.schemas import ManualSchema File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\schemas\__init__.py", line 33, in <module> authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES, File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\settings.py", line 225, in __getattr__ val = perform_import(val, attr) File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\settings.py", line 168, in perform_import return [import_from_string(item, setting_name) for item in val] File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\settings.py", line 168, in <listcomp> return [import_from_string(item, setting_name) for item in val] File "C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\rest_framework\settings.py", line 180, in import_from_string raise ImportError(msg) ImportError: Could not import 'rest_framework_jwt.authentication.JSONWebTokenAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannot import name 'smart_text' from 'django.utils.encoding' (C:\Users\user\yb\django_askcompany\askcompany\lib\site-packages\django\utils\encoding.py).
access key를 받으시고 어떤 응답을 기대하셨고, 어떤 응답이 오시나요? 단순히 안된다라고 하시기보다, 예상하시는 결과와 현재의 결과를 설명해주셔야만 보다 좋은 답변을 얻으실 수 있습니다. // 의사도 증상을 알아야 진단을 하는 데, 아프다고만 하면 진단할 수가 없는 것과 같은 이치입니다.
현재의 상황을 파악하시는 연습이 되셔야, 저의 답변이 보다 도움이 되실 것입니다.
저의 경우, djangorestframework-simplejwt 를 설정하고, 아래의 authentication/permission 설정을 하고, 구현된 apiview에서 Authorization 헤더에 Bearer와 함께 jwt access token을 설정하고 요청하여 200 응답을 받았습니다.
장고에는 수많은 라이브러리가 있지만, 단순히 복&붙만으로 동작만을 확인하고 넘어가면 나중에 이슈가 생겼을때 대응하기 힘듭니다. 수많은 라이브러리를 통해 우리가 개발을 보다 수월하게 할 수 있지만, 이는 우리가 개발할 공수를 줄여주는 것일 뿐, 그 라이브러리를 잘 파악할 필요는 있습니다. // 내공을 쌓아가는 거죠.
설정을 하고 토큰을 잘받고, cpython에 진입해서 token을 뜯어보는 것 까지는 다 잘 실행이 되엇는데요
강의중에 test_token.py를 만들고 requests.get을 활용해서 응답을 받는 부분이 안되더라구요
import requests
JWT_ACCESS_TOKEN="ey..."
#header
jwt_headers={
"Authorization": f"Bearer {JWT_ACCESS_TOKEN}"}
res = requests.get("http://localhost:8000/post/1",headers= jwt_headers)
print(res)
이렇게 저렇게 찾아보다가 header의 authorization에 bearer를 넣어서(이 bearer가 jwt타입의 토큰을 사용한다는 뜻이더군요!) 하면 다른 분들의 코드에서는 잘 작동하는 것 같은데, 저는 응답이 돌아오지를 않네요.. 토큰의 유효기간 문제는 아닌 듯 합니다.
혹시 괜찮으시면 키워드를 던져주실 수 있으실까요? 어떤 부분을 찾아봐야할지를 잘 모르겠네요 ㅠㅠ