gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:39:09 26 4
gpt4 key购买 nike

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

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

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

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

我的网址是这样的:

http://127.0.0.1:8000/auth/users/activate/MQ/4qu-584cc6772dd62a3757ee

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

我在 Django View 中处理这个问题。

View 需要发出如下 POST 请求:

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

data= [(‘uid’=‘MQ’), (‘token’=‘4qu-584cc6772dd62a3757ee’),]

我处理 GET 的观点是:

from rest_framework.views import APIView
from rest_framework.response import Response
import os.path, urllib


class UserActivationView(APIView):

def get (self, request):
urlpathrelative=request.get_full_path()
ABSOLUTE_ROOT= request.build_absolute_uri('/')[:-1].strip("/")

spliturl=os.path.split(urlpathrelative)
relpath=os.path.split(spliturl[0])
uid=spliturl[0]
uid=os.path.split(uid)[1]

token=spliturl[1]
postpath=ABSOLUTE_ROOT+relpath[0]+'/'
post_data = [('uid', uid), ('token', token),]
result = urllib.request.urlopen(postpath, urllib.parse.urlencode(post_data).encode("utf-8"))
content = result.read()
return Response(content)

最佳答案

views.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)

urls.py

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

关于python - Djoser 用户激活电子邮件 POST 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com