Djoser 用户激活电子邮件 POST 示例

lef*_*oud 3 python django django-rest-framework djoser

我正在使用 Django rest 框架和 Djoser 进行身份验证和用户注册。

当新用户注册时,Djoser 会发送一封包含执行 GET 请求链接的激活电子邮件。为了激活,我需要从激活 URL 中提取 uid 和令牌,并向 Djoser 发出 POST 请求,以便能够激活用户。

我的环境是 Python 3 和 Django 1.11,Djoser 1.0.1。

我想做的是在Django中处理get请求,提取uid和token,然后进行POST请求。我已经提取了 uid 和令牌,并希望进行 POST(在此 GET 请求中)。我不知道如何在后台发出这个 POST 请求。

我的网址是这样的:

http://127.0.0.1:8000/auth/users/activate/MQ/4qu-584cc6772dd62a3757ee
Run Code Online (Sandbox Code Playgroud)

当我在电子邮件中单击它时,它会发出一个 GET 请求。

我在 Django 视图中处理这个。

视图需要发出这样的 POST 请求:

http://127.0.0.1:8000/auth/users/activate/

data= [(‘uid’=‘MQ’), (‘token’=‘4qu-584cc6772dd62a3757ee’),]
Run Code Online (Sandbox Code Playgroud)

我处理 GET 的观点是:

http://127.0.0.1:8000/auth/users/activate/MQ/4qu-584cc6772dd62a3757ee
Run Code Online (Sandbox Code Playgroud)

Sam*_*enc 10

视图.py

from rest_framework.views import APIView
from rest_framework.response import Response
import requests

class UserActivationView(APIView):
    def get (self, request, uid, token):
        protocol = 'https://' if request.is_secure() else 'http://'
        web_url = protocol + request.get_host()
        post_url = web_url + "/auth/users/activate/"
        post_data = {'uid': uid, 'token': token}
        result = requests.post(post_url, data = post_data)
        content = result.text
        return Response(content)
Run Code Online (Sandbox Code Playgroud)

网址.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^auth/users/activate/(?P<uid>[\w-]+)/(?P<token>[\w-]+)/$', UserActivationView.as_view()),
]
Run Code Online (Sandbox Code Playgroud)

  • 拼写错误:“result.text()”应该是“result.text” (3认同)
  • 这挂起了我的调试 django 服务器 (2认同)