首页 > 解决方案 > 如何在模板中显示错误,例如用户名已被占用?

问题描述

如何在此页面 Aaccounts/sign-up.html 中显示诸如电子邮件或用户名之类的错误,因为当尝试输入用户名并且该用户名已被使用时,页面仅刷新而没有任何消息。

前:

在此处输入图像描述

后:

在此处输入图像描述

代码:

class SignUpView(CreateView):

    form_class = CustomUserCreationForm
   

    success_url = reverse_lazy('login')
    template_name = 'Aaccounts/sign-up.html'
    
   
        
    



def login (request) :

    if request.method=='POST':    

        passwordtest=request.POST ['password']
        usernametest=request.POST ['username']
        user=auth.authenticate(username=usernametest,password=passwordtest)
        if user is not None :
            



            auth.login(request,user)
            current_user = request.user
            correctUSER = get_object_or_404(CustomUser, pk=current_user.id)
            need_to_cheack=correctUSER.main_affilitee
            kain=False
            if need_to_cheack !="":
                objs=CustomUser.objects.all()
                for aleratwar in objs:
                    if kain==False:

                        if aleratwar.username==need_to_cheack and aleratwar.afilliteuser==True and aleratwar.username !=correctUSER.username  :
                            kain=True
                        



            if kain== False:
                correctUSER.main_affilitee=''
                correctUSER.save()

            return redirect('home')
        else:

            

            return render(request,'Aaccounts/login.html',{'eroor':True})

    else:

        return render(request,'Aaccounts/login.html')

标签: djangodjango-viewsdjango-forms

解决方案


这是显示消息的简单示例。在你看来你可以这样

from django.contrib import messages

def login(request):
    if request.method == 'POST':
        form = AuthenticationForm(request.POST)
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)

        if user is not None:
            if user.is_active:
                auth_login(request, user)
                return redirect('index')
        else:
            messages.error(request,'username or password not correct')
            return redirect('login')

    else:
        form = AuthenticationForm()
    return render(request, 'todo/login.html', {'form': form})
    
                            {{ message }}
    
                        </div>
                {% endfor %}

并在您的模板中:

 {% for message in messages %}

                <div class="alert alert-success">
                    <a class="close" href="#" data-dismiss="alert">×</a>

                    {{ message }}

                </div>
        {% endfor %}

推荐阅读