首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Django Djoser处理激活url?

如何使用Django Djoser处理激活url?
EN

Stack Overflow用户
提问于 2019-12-28 14:11:36
回答 1查看 1.4K关注 0票数 2

我无法通过激活链接激活用户。

如何正确配置路径来处理他们的请求?

我的配置:

代码语言:javascript
复制
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')),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-31 01:54:46

我必须指定一个端点,其中的uid和token和将包含在参数中。此终结点指向将处理这些参数的视图。然后向djoser激活端点发送post请求。我们不能直接使用djoser给出的url,因为它需要post请求,而用户将通过单击电子邮件中的链接来提交get请求。设置:

代码语言:javascript
复制
DJOSER = {
 'ACTIVATION_URL': 'account-activate/{uid}/{token}/',
}

查看:

代码语言:javascript
复制
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())

一个类似的解决方案here,但djoser在他们发布他们的答案后更新了,我不得不做一些修改。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59508580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档