如何在不使用Django默认登录表单的情况下登录?

2024-09-27 00:15:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了自己的登录页面,我想知道如何登录。 我试过这个

Login.html

   <form action="{% url 'success' %}" id="Myform">
            {% csrf_token %}
            <label>Username:
                <input type="text" placeholder="Enter Your Username" id="input" name="userUsername">
            </label><br>

            <label>Password:
                <input type="password" placeholder="Enter Your Password" id="input" name="userPassword">
            </label><br>

            <a href="{% url 'register' %}" style="float: right;">Didn't Have Account?</a><br><br>

            <button class="btn-success" id="button">Log In</button>
   </form>

View.py

def registerUser(request):
    username = request.POST['username']  #this LOC  is generating the error 
    email = request.POST['email']
    password = request.POST['password']

    salt = os.urandom(32)
    key = hashlib.pbkdf2_hmac(
        'sha256',
        password.encode('utf-8'),
        salt,
        100000)
    hashPassword = salt + key
    context = {
        'username': username
    }
    if request.method == 'POST':
        user = User(username=username, email=email, password=password, hashedPassword=hashPassword)
        user.save()
        return render(request, "success.html", context)
    else:
        return HttpResponse("Username already Exists")

def loginCredentials(request):

    username = request.POST["userUsername"]
    password = request.POST['userPassword']

    salt = os.urandom(32)
    key = hashlib.pbkdf2_hmac(
    'sha256',
    password.encode('utf-8'),
    salt,
    100000)
    hashPassword = salt + key

    checkUsername = User.objects.get(username=username)
    checkPassword = User.objects.get(hashedPassword=hashPassword)
    if checkUsername and checkPassword:
        return render(request, "success.html")
    else:
        return render(request, "login.html")

运行应用程序后,我收到此错误

django.utils.datastructures.MultiValueDictKeyError: 'username'

[09/May/2020 17:03:27] "GET/success/?csrfmiddlewaretoken=ORQBKajE1Ezzk0PeoWkUMxc3nUBbJ8g29I6MsMElyXbT8C8CjA2uoi9wdR7Z6hpd&userUsername=harshashra&userPassword=qwerty HTTP/1.1" 500 79237

所以,我想知道的是,我如何解决这个错误,并通过我的自定义登录表单登录


Tags: keybridinputreturnemailrequesthtml

热门问题