KeyError at /users/login 'isLoggedIn'

大卫·霍伦贝克

所以错误在我的 views.py 文件的第 29 行。但是我似乎无法找到问题所在。我的视图和我的 models.py 文件看起来不错。当您单击登录页面上的登录按钮时会发生这种情况。不过,我确实去了并驻留了整个 def login 。并且第 29 行之后的 else 函数确实起作用,因为如果我输入错误信息,它会抛出像 ti 应该的消息。所以这只是 if 语句

MultiValueDictKeyError at /users/login "u'email'" 错误是视图 py 中的第 29 行

追溯:

文件“C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\exception.py”在内部 42. response = get_response(request)

_get_response 187中的文件“ C:\ Users \ dbhol \ Desktop \ DojoAssignments \ Python \ myenvirnoments \ djangoENv \ lib \ site-packages \ django \ core \ handlers \ base.py”。response = self.process_exception_by_middleware(e,request)

_get_response 185 中的文件“C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py”。响应=wrapped_callback(request, *callback_args, ** callback_kwargs)

文件“C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\django2\loginReg\loginReg\apps\logReg\views.py”在登录29.如果viewsResponse['isLoggedIn']:

异常类型:KeyError at /users/login 异常值:'isLoggedIn'

<!DOCTYPE html>
<html>
<head>
    <title>Login and Registration</title>
</head>
<body>
    {% if messages %}
        {% for message in messages %}
            <p>{{ message }}</p>
        {% endfor %}
    {% endif %}
    <div class="register">
        <h1>Register</h1>
        <form class="" action="{% url 'users:register' %}" method="post">
            {% csrf_token %}
            <p>First Name: <input type="text" name="first_name" value=""></p>
            <p>Last Name: <input type="text" name="last_name" value=""></p>
            <p>Email: <input type="text" name="email" value=""></p>
            <p>Password: <input type="Password" name="password" value=""></p>
            <p>Confirm Password: <input type="password" name="confirm_password" value=""></p>
            <input type="submit" name="" value="Register">
        </form>
    </div>
    <div class="login">
        <h1>Login</h1>
        {% csrf_token %}
        <form class="" action="{% url 'users:login' %}" method="post">
        <p>Email: <input type="text" name="email" value=""></p>
        <p>Password: <input type="Password" name="password" value=""></p>
        <input type="submit" name="" value="Login">
        </form>
    </div>
</body>
</html>

模型.py

from __future__ import unicode_literals
from django.db import models
import re, bcrypt
EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$')

class UserManager(models.Manager):
    def add_user(self, postData):
        errors = []
        if not len(postData['first_name']):
            errors.append('First name is required')
        if len(postData['last_name']) < 2:
            errors.append('Last name must be at least 2 characters long!')
        if not len(postData['email']):
            errors.append('Email is required!')
        if not EMAIL_REGEX.match(postData['email']):
            errors.append('Please enter a valid email!')
        check_email = self.filter(email = postData['email'])
        if check_email:
            errors.append('Sorry email already exist!')
        if len(postData['password']) < 8:
            errors.append('Password must be at least 8 characters!')
        if not postData['password'] == postData['confirm_password']:
            errors.append('Passwors must match!')

        modelsResponse = {}

        if errors:
            # failed validations
            modelsResponse ['isRegistered'] = False
            modelsResponse['errors'] = errors
        else:
            # passed validations, create a new user
            hashed_password = bcrypt.hashpw(postData['password'].encode(), bcrypt.gensalt())
            user = self.create(first_name = postData['first_name'] , last_name = postData['last_name'], password = hashed_password)
            modelsResponse ['isRegistered']= True
            modelsResponse['user'] = user

        return modelsResponse

        def login_user(self, postData):
            user = self.filter(email = postData['email'])
            errors = []
            modelsResponse = {}
            if not user:
                #invalid email
                errors.append('Invalid email!')

            else:
                #found a user match, check the password to see if they match
                if bcrypt.checkpw(postData['password'].encode(), user[0].password.encode()):
                    #login the user
                    modelsResponse['isLoggedIn'] = True
                    modelsResponse['user'] = user[0]
                else:
                    # invalid email password combination
                    errors.append('Invalid email/password combination!')

            if errors:
                modelsResponse['isLoggedIn'] = False
                modelsResponse['errors'] = errors

        return modelsResponse

class User(models.Model):
    first_name = models.CharField(max_length = 50)
    last_name = models.CharField(max_length = 50)
    email = models.CharField(max_length = 100)
    password = models.CharField(max_length =100)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

    objects = UserManager()

网址.py

from django.conf.urls import url, include 
from . import views

urlpatterns = [
    url(r'^$', views.index, name= 'index'),
    url(r'^register$', views.register, name = 'register' ),
    url(r'^success$', views.success, name = 'success'),
    url(r'^login$', views.login, name = 'login' ),
    url(r'^logout$', views.logout, name = 'logout'),
]

视图.py

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

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

def register(request):
    viewsResponse = User.objects.add_user(request.POST)
    if viewsResponse['isRegistered']:
        request.session['user_id'] = viewsResponse['user'].id
        request.session['user_fname'] = viewsResponse['user'].first_name
        return redirect('users:success')
    else:
        for errors in viewsResponse['errors']:
            messages.error(request, errors)
        return redirect('users:index')


def success(request):
    if 'user_id' not in request.session:
        messages.error(request, 'Must be logged in!')
        return redirect('users.index')
    return render(request, 'logReg/success.html')

def login(request):
    viewsResponse = User.objects.login_user(request.POST)
    if viewsResponse['isLoggedIn']:
        request.session['user_id'] = viewsResponse['user'].id
        request.session['user_fname'] = viewsResponse['user'].first_name
        return redirect('users:success')
    else:
        for errors in viewsResponse['errors']:
            messages.error(request, errors)
        return redirect('users:index')

def logout(request):
    return redirect('users.index')
迪迈诺

刚刚看到您的代码中可能存在缺陷。您没有在 def add_user 中使用电子邮件创建用户

user = self.create(first_name = postData['first_name'] , last_name = postData['last_name'], password = hashed_password

试试这个代码:

user = self.create(first_name = postData['first_name'] , last_name = postData['last_name'], email = postData['email'], password = hashed_password

希望至少能让你朝着正确的方向前进。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

功能isloggedin反应不起作用

来自分类Dev

无法读取未定义的属性“ isLoggedIn”

来自分类Dev

IsLoggedIn http 服务与 Angular 中的 API

来自分类Dev

节点:在所有路由之前如何实现isLoggedIn?

来自分类Dev

致命错误:调用未定义的函数isLoggedIn()

来自分类Dev

护照+节点-req.isAuthentiated不是Object.isLoggedIn的函数

来自分类Dev

我想将参数 isloggedin 用户传递给 django 前端

来自分类Dev

“ const isLoggedIn = props.isLoggedIn;”的目的是什么?就像在反应快速启动/条件渲染文档中一样?

来自分类Dev

测试KeyError

来自分类Dev

KeyError Pandas

来自分类Dev

熊猫Keyerror

来自分类Dev

KeyError:“ HistoricalPriceStore”

来自分类Dev

KeyError:列名

来自分类Dev

返回服务器错误Jade找不到isLoggedIn未定义

来自分类Dev

NuxtJs计算属性“ isLoggedIn”已分配给但没有设置器

来自分类Dev

Slim isLoggedIn小型中间件,如果已经登录则可以重定向用户

来自分类Dev

KeyError:“ \ n” python 2.7.5

来自分类Dev

KeyError:“ plotly_domain”

来自分类Dev

KeyError:“从空集弹出” Python

来自分类Dev

KeyError:dict中的nan

来自分类Dev

Python中的KeyError

来自分类Dev

KeyError:“ DATABASE_URL”

来自分类Dev

密钥存在时的KeyError

来自分类Dev

python和networkX keyerror

来自分类Dev

Peewee KeyError:“ i”

来自分类Dev

JSON KeyError解析输入

来自分类Dev

Pyro4的KeyError

来自分类Dev

Django表单验证KeyError

来自分类Dev

使用Pivot的Pandas KeyError