0
我正在使用django-rest-framework-jwt生成安全标记,但我需要在有人登录时使用标记获取用户信息。唯一的我已经看到这样做的方式是创建一个自定义函数,将覆盖默认功能。我对Django很新,所以我仍然试图弄清楚事情是如何工作的,这是我在阅读THIS文章后尝试的。我尝试了许多方法来实现这一目标,但这似乎是最好的方法。ImportError:试图导入自定义文件时 - Django JWT
问题我有,当我使用当前的设置,我得到:
ImportError: Could not import 'custom_jwt.jwt_response_payload_handler' for API setting 'JWT_PAYLOAD_HANDLER'. ImportError: No module named custom_jwt.
1 - 创建custom_jwt.py
是什么在哪里把它的最佳实践后?如果没有,有什么建议在哪里?
2-我将如何进入settings.py
中的custom_jwt.py
中的功能?
settings.py
JWT_AUTH = {
'JWT_PAYLOAD_HANDLER':
'custom_jwt.jwt_response_payload_handler',
'JWT_RESPONSE_PAYLOAD_HANDLER':
'custom_jwt.jwt_payload_handler',
}
custom_jwt.py
from datetime import datetime
from calendar import timegm
from rest_framework_jwt.settings import api_settings
def jwt_payload_handler(user):
"""
Custom payload handler
Token encrypts the dictionary returned by this function, and can be decoded by rest_framework_jwt.utils.jwt_decode_handler
"""
return {
'user_id': user.pk,
'email': user.email,
'is_superuser': user.is_superuser,
'exp': datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA,
'orig_iat': timegm(
datetime.utcnow().utctimetuple()
)
}
def jwt_response_payload_handler(token, user=None, request=None):
"""
Custom response payload handler.
This function controlls the custom payload after login or token refresh. This data is returned through the web API.
"""
return {
'token': token,
'user': {
'email': user.email,
}
}
项目结构
project
account
__init__.py
admin.py
apps.py
managers.py
models.py
serializers.py
tests.py
views.py
core
__init__.py
settings.py
custom_jwt.py
urls.py
wsgi.py
db.sqlite3
Python版本
Python 2.7.10
什么Python版本? –
忘了包括 - Python 2.7.10 – Mike
我看了site-packages> rest_framework_jwt> utils.py,看看我可以如何工作。我注意到我可能在错误的应用程序中使用了我的'custom_jwt.py',所以我将它移动到了'account',并更改了'settings.py',它的工作原理......一些。一个我得到它的工作,我会张贴我为未来偷看。 – Mike