【发布时间】:2018-04-19 15:31:08
【问题描述】:
我正在使用 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
当我在电子邮件中单击它时,它会发出 GET 请求。
我在 Django 视图中处理这个问题。
视图需要像这样发出 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)
【问题讨论】:
-
不确定你为什么需要这个。 Djoser 应该处理整个过程,不需要单独发出 POST 请求。
-
Djoser 不处理它。请看这个:github.com/sunscrapers/djoser/issues/14
-
我在这里添加我的代码:
标签: python django django-rest-framework djoser