如何使用 Django Djoser 处理激活 url?
How to handle activation url with Django Djoser?
我无法通过激活激活用户 link。
如何正确配置路径来处理他们的请求?
我的配置:
DJOSER = {
'PASSWORD_RESET_CONFIRM_URL': 'api/v1/auth/users/password/reset/confirm/{uid}/{token}',
'USERNAME_RESET_CONFIRM_URL': 'api/v1/auth/users/username/reset/confirm/{uid}/{token}',
'ACTIVATION_URL': 'api/v1/auth/users/activate/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
'SEND_CONFIRMATION_EMAIL': True,
'SERIALIZERS': {},
# 'USER_ID_FIELD': '',
'LOGIN_FIELD': 'username',
'USER_CREATE_PASSWORD_RETYPE': True,
'SET_USERNAME_RETYPE': True,
'USERNAME_RESET_CONFIRM_RETYPE': True,
'SOCIAL_AUTH_ALLOWED_REDIRECT_URIS': [],
'HIDE_USERS': True,
'EMAIL': {
'activation': 'api.email.ActivationEmail',
'confirmation': 'api.email.ConfirmationEmail',
'password_reset': 'api.email.PasswordResetEmail',
'password_changed_confirmation': 'api.email.PasswordChangedConfirmationEmail',
'username_changed_confirmation': 'api.email.UsernameChangedConfirmationEmail',
'username_reset': 'api.email.UsernameResetEmail',
}
}
path('auth/', include('djoser.urls')),
path('auth/', include('djoser.urls.jwt')),
path('auth/', include('djoser.urls.authtoken')),
我必须指定一个端点,其中 uid 和令牌将包含在参数中。此端点指向将处理这些参数的视图。然后向 djoser 激活端点发送 post 请求。我们不能直接使用 djoser 给出的 url,因为它需要一个 post 请求,而用户将通过单击电子邮件中的 link 提交一个获取请求。
设置:
DJOSER = {
'ACTIVATION_URL': 'account-activate/{uid}/{token}/',
}
查看:
class ActivateUser(GenericAPIView):
def get(self, request, uid, token, format = None):
payload = {'uid': uid, 'token': token}
url = "http://localhost:8000/api/v1/auth/users/activation/"
response = requests.post(url, data = payload)
if response.status_code == 204:
return Response({}, response.status_code)
else:
return Response(response.json())
一个类似的解决方案 但 djoser 更新了,因为他们 post 编辑了他们的答案,我不得不做一些更改。
我无法通过激活激活用户 link。
如何正确配置路径来处理他们的请求?
我的配置:
DJOSER = {
'PASSWORD_RESET_CONFIRM_URL': 'api/v1/auth/users/password/reset/confirm/{uid}/{token}',
'USERNAME_RESET_CONFIRM_URL': 'api/v1/auth/users/username/reset/confirm/{uid}/{token}',
'ACTIVATION_URL': 'api/v1/auth/users/activate/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
'SEND_CONFIRMATION_EMAIL': True,
'SERIALIZERS': {},
# 'USER_ID_FIELD': '',
'LOGIN_FIELD': 'username',
'USER_CREATE_PASSWORD_RETYPE': True,
'SET_USERNAME_RETYPE': True,
'USERNAME_RESET_CONFIRM_RETYPE': True,
'SOCIAL_AUTH_ALLOWED_REDIRECT_URIS': [],
'HIDE_USERS': True,
'EMAIL': {
'activation': 'api.email.ActivationEmail',
'confirmation': 'api.email.ConfirmationEmail',
'password_reset': 'api.email.PasswordResetEmail',
'password_changed_confirmation': 'api.email.PasswordChangedConfirmationEmail',
'username_changed_confirmation': 'api.email.UsernameChangedConfirmationEmail',
'username_reset': 'api.email.UsernameResetEmail',
}
}
path('auth/', include('djoser.urls')),
path('auth/', include('djoser.urls.jwt')),
path('auth/', include('djoser.urls.authtoken')),
我必须指定一个端点,其中 uid 和令牌将包含在参数中。此端点指向将处理这些参数的视图。然后向 djoser 激活端点发送 post 请求。我们不能直接使用 djoser 给出的 url,因为它需要一个 post 请求,而用户将通过单击电子邮件中的 link 提交一个获取请求。 设置:
DJOSER = {
'ACTIVATION_URL': 'account-activate/{uid}/{token}/',
}
查看:
class ActivateUser(GenericAPIView):
def get(self, request, uid, token, format = None):
payload = {'uid': uid, 'token': token}
url = "http://localhost:8000/api/v1/auth/users/activation/"
response = requests.post(url, data = payload)
if response.status_code == 204:
return Response({}, response.status_code)
else:
return Response(response.json())
一个类似的解决方案