我一次又一次地被重定向到同一个登录页面,但它甚至没有验证证书。

问题描述 投票:1回答:1

我的登录页面。

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link rel='stylesheet' type='text/css' media='screen' href='main.css'>
    <script src='main.js'></script>
</head>
<body>
    <form action="login" media="post">
        {% csrf_token %}
        <input type="text" name="username" placeholder="username"><be>
        <input type="password" name="password" placeholder="password"><be>
        <input type="Submit">
    </form> 
</body>
</html>

views.py:

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.models import User, auth
from django.contrib.auth import authenticate




 # Create your views here.
 def homepage(request):
 return render(request, 'homepage.html')


def login(request):
    if request.method== 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)

        if user is not None:
             auth.login(request, user)
             return redirect("/")
       else:
           messages.success(request,'password not matching')
           return redirect('home')
   else:
        return render(request,'login.html')

def registration(request): 

if request.method == 'POST':
    first_name = request.POST['first_name']
    last_name = request.POST['last_name']
    username = request.POST['username']
    password = request.POST['password']
    confirmpassword = request.POST['confirmpassword']
    email = request.POST['email']

    if password==confirmpassword:
        if User.objects.filter(username=username).exists():
            messages.info(request, 'Username Taken')
            return redirect('/registration')
        elif User.objects.filter(email=email).exists():
            messages.info(request, 'Email Taken')
            return redirect('/registration')
        else:
            user = User.objects.create_user(username=username, 
 password=password, email=email, first_name=first_name, last_name=last_name)
            user.save();
            print('user successfully created')
            return redirect('login')

    else:
        messages.info(request,'password not matching')
        return redirect('/registration')
    return redirect('/')


else:
    return render(request, 'registration.html')   

我的 urls.py:

 from django.urls import path

 from . import views

 urlpatterns = [
      path('',views.homepage, name='homepage'),
      path('login',views.login, name='login'),
      path('registration',views.registration, name='registration'),
      ]

每次这个登录页面都会重定向到同一个登录页面,无论我输入的是错误的凭证还是正确的凭证,我想它甚至没有验证凭证是否正确或错误,请帮帮我,请帮帮我,请帮帮我,请帮帮我。

django django-models django-forms django-views django-templates
1个回答
1
投票

你检查了是否有一个用户的用户名是 'username' 并作为密码 'password',你不使用 userpassword 变量,但字符串的 包含 usernamepassword 作为 内容. 因此,你应该使用变量。

# not 'username' and 'password'
user = authenticate(username=username, password=password)
© www.soinside.com 2019 - 2024. All rights reserved.