微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用户在 django 中按下验证链接后未激活

如何解决用户在 django 中按下验证链接后未激活

登录注册页面工作正常..但我的验证链接有一些错误

  1. Views.py
from django.shortcuts import render
from userprofileinfo.forms import UserForm
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect,HttpResponse
from django.contrib.auth import authenticate,login,logout
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.views import View
from django.contrib import messages
from django.core.mail import send_mail
from django.contrib.sites.shortcuts import get_current_site
from django.utils.encoding import force_bytes,force_text,DjangoUnicodeDecodeError
from django.core.mail import send_mail
from django.contrib.sites.shortcuts import get_current_site
from django.utils.http import urlsafe_base64_decode,urlsafe_base64_encode
from django.template.loader import render_to_string
from .utils import account_activation_token
from django.urls import reverse
from django.contrib import auth



@login_required
def special(request):
    return HttpResponseRedirect("You are logged in,Nice!")


@login_required
def userlogout(request):
    logout(request)
    return HttpResponseRedirect(reverse('careforallapp:base'))


def register(request):
    registered = False




    if request.method == "POST":
        user_form = UserForm(data=request.POST)
        if user_form.is_valid():

            user = user_form.save()
            user.set_password(user.password)
            user.is_active = False
            user.save()
            email = UserForm('email')
            current_site = get_current_site(request)
            email_body = {
                    'user': user,'domain': current_site.domain,'uid': urlsafe_base64_encode(force_bytes(user.pk)),'token': account_activation_token.make_token(user),}

            link = reverse('userprofileinfo:activate',kwargs={
                               'uidb64': email_body['uid'],'token': email_body['token']})

            email_subject = 'Activate your account'

            activate_url = 'http://'+current_site.domain+link

            send_mail(
                    email_subject,'Hi '+user.username + ',Please the link below to activate your account \n'+activate_url,'settings.EMAIL_HOST',[user.email],fail_silently=False
            )

            return HttpResponseRedirect(reverse('careforallapp:base'))
        else:
            print(user_form.errors)
    else:
        user_form = UserForm()


    return render(request,'userprofileinfo/registration.html',{'user_form':user_form,'registered':registered})

class VerificationView(View):
    def get(self,request,uidb64,token):
        try:
            id = force_text(urlsafe_base64_decode(uidb64))
            user = User.objects.get(pk=id)

            if not account_activation_token.check_token(user,token):
                return redirect('login'+'?message='+'User already activated')

            if user.is_active:
                return redirect('login')
            user.is_active = True
            user.save()

            messages.success(request,'Account activated successfully')
            return redirect('login')

        except Exception as ex:
            pass

        return HttpResponseRedirect(reverse('userprofileinfo:userlogin'))

def userlogin(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username = username,password = password)

        if user:
            if user.is_active:
                login(request,user)
                return HttpResponseRedirect(reverse('careforallapp:base'))

            else:
                return HttpResponse("ACCOUNT NOT ACTIVE")
        else:
            print("Someone tried to login and Failed!")
            print("Username: {} and password: {}".format(username,password))
            return HttpResponse("invalid login details")
    else:
        return render(request,'userprofileinfo/login.html',{})

当我访问我的 django-admin 页面时,我找到了在我的页面注册用户,但我必须手动激活该用户,但它应该由通过验证链接注册用户激活...我认为这是逻辑错误。 ..你能帮帮我吗。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。