Django 使用urlsafe_base64_decode(uidb64)解码uidb64。decode()返回<;0x7FC13BD2EA0处的属性对象>;
基本上,我正在尝试做的是在注册后向用户的电子邮件地址发送一个包含令牌的链接,这样他们就可以验证他们的电子邮件地址并激活他们的帐户 在用户收到电子邮件并单击它之后,我想解码我编码的uidb64,以便获得pk,然后在数据库中执行用户查询,但在我尝试使用Django 使用urlsafe_base64_decode(uidb64)解码uidb64。decode()返回<;0x7FC13BD2EA0处的属性对象>;,django,django-rest-framework,encoding,Django,Django Rest Framework,Encoding,基本上,我正在尝试做的是在注册后向用户的电子邮件地址发送一个包含令牌的链接,这样他们就可以验证他们的电子邮件地址并激活他们的帐户 在用户收到电子邮件并单击它之后,我想解码我编码的uidb64,以便获得pk,然后在数据库中执行用户查询,但在我尝试使用 urlsafe\u base64\u decode(uidb64).decode() 它返回结果 下面是我的URL.py代码 from Auth.Api.views import RegisterView, ObtainLoginTokenView,
urlsafe\u base64\u decode(uidb64).decode()
它返回结果
下面是我的URL.py代码
from Auth.Api.views import RegisterView, ObtainLoginTokenView, DestroyLoginTokenView
from django.urls import path
from .views import *
app_name = 'users'
urlpatterns = [
path('register/', RegisterView.as_view()),
path('activate/<uidb64>/<token>/',AccountActivation.as_view(), name='activate'),
path('login/', ObtainLoginTokenView.as_view()),
path('logout/', DestroyLoginTokenView.as_view()),
]
下面是views.py代码
下面是我的EmailAccount激活码
类帐户激活(视图):
def get(自我、请求、uidb64、**kwargs):
uid=urlsafe\u base64\u decode(uidb64).decode()
打印(uid)
#我把它打印出来之后
返回HttpResponse(“处理它”)
get\u user\u model()
返回一个模型而不是用户实例,访问模型上的.pk
将返回属性而不是实际的主键
from django.contrib.auth.tokens import default_token_generator
from django.contrib.sites.shortcuts import get_current_site
from django.core.mail import EmailMessage
from django.template.loader import render_to_string
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from .token import account_activation_token
from django.conf import settings
from django.contrib.auth import get_user_model
class SendMail:
def registerationMail(self,*args,**kwargs):
subject = 'Account Activation.'
message = render_to_string('mail/acc_active_email.html', {
'domain':get_current_site(self.kwargs.get('request')),
'uid': urlsafe_base64_encode(force_bytes(get_user_model().pk)),
'token': self.kwargs.get('token')
})
receipient = self.kwargs.get('receipient')
email = EmailMessage(
subject, message, settings.EMAIL_HOST_USER, to=[receipient]
)
if "".strip() or None in [receipient]:
return "No Email Address Provided"
else:
return email.send()
class RegisterView(APIView):
def get(self, request):
return redirect("/auth/register/")
def post(self, request, **kwargs):
# try:
email = self.request.POST.get("email")
username = self.request.POST.get("username")
password = self.request.POST.get("password")
password2 = self.request.POST.get("password2")
phone = self.request.POST.get("phone")
account_type = self.request.POST.get("account_type")
official_title = self.request.POST.get("official_title")
user = User.objects.create(email=email, phone=phone, username=username)
user.set_password(password2)
user.account_type = account_type
user.official_title = official_title
user.save()
response = {"type": "created", "message": "Created"}
self.kwargs.update({"receipient": user.email})
token, created = Token.objects.get_or_create(user=user)
token.save()
self.kwargs.update({"token": token.key})
self.kwargs.update({"request": request})
return HttpResponse(SendMail.registerationMail(self))
class AccountActivation(View):
def get(self, request, uidb64, **kwargs):
uid = urlsafe_base64_decode(uidb64).decode()
print(uid)
# I get <property object at 0x7fc13bd2aea0> after printing it
return HttpResponse("Working On It")