MultiValueDictKeyError-Django

时间:2020-02-08 07:27:11

标签: javascript django django-views

我在Django中遇到MultiValueDictKeyError时遇到问题。我试图从我的网站注销用户,所以我输入了以下代码。

以html

    </li>
            <li class="nav-item mr-3">
              <a href="javascript:{document.getElementById('logout').submit()}" class="nav-link">
              <i class="fas.fa-sign-out-alt"></i>Logout 
              </a>
              <form action="{% url 'logout'%}" method="POST" id="logout">
                {% csrf_token %}
                <input type="hidden">
              </form>
            </li>

这是我的登录和注销功能,例如“ accounts / views.py”

    def login(request):
    # request method
    if request.method == 'POST':
        #Saving the username and password in a variable
        username = request.POST['username']
        password = request.POST['password']

        #checking if the user name and password matches using auth function
        user = auth.authenticate(username=username, password=password)

        # checking if the user is found in Database with user name and password, if found then login
        if user is not None:
            auth.login(request, user)
            messages.success(request, "Welcome to BTRE.")
            return redirect('dashboard')
        # if user name and password do not match with DB. display message and redirect to login page.
        else:
            messages.error(request, "Incorect Username and/or Password. Please type correct user name and password")
            return redirect('login')
    else:
        return render (request, 'accounts/login.html')

def logout(request):
    if request.method == 'POST':
        auth.logout(request)
        messages.success(request,"You are now logged out")
        return redirect('index')

环境:

请求方法:POST请求URL: http://127.0.0.1:8000/accounts/logout

Django版本:3.0.2 Python版本:3.8.1已安装的应用程序: ['django.contrib.admin','django.contrib.auth', 'django.contrib.contenttypes','django.contrib.sessions', 'django.contrib.messages','django.contrib.staticfiles', 'django.contrib.humanize','pages.apps.PagesConfig', 'listings.apps.ListingsConfig','realtors.apps.RealtorsConfig', 'accounts.apps.AccountsConfig']已安装的中间件: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']

回溯(最近通话最近):文件 “ C:\ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ utils \ datastructures.py”, 第76行,在 getitem list_ = super()。获取项(键)

在处理上述异常(“用户名”)期间,另一个异常 发生:档案 “ C:\ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ core \ handlers \ exception.py”, 第34行,在内部 response = get_response(request)文件“ C:\ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ core \ handlers \ base.py”, 第115行,在_get_response中 响应= self.process_exception_by_middleware(e,请求)文件“ C:\ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ core \ handlers \ base.py”, _get_response中的第113行 响应= wraped_callback(请求,* callback_args,** callback_kwargs)文件“ C:\ Users \ DD \ Desktop \ btre \ accounts \ views.py”,第12行,登录 用户名= request.POST ['用户名']文件“ C:\ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ utils \ datastructures.py”, 第78行,位于 getitem 引发MultiValueDictKeyError(key)

异常类型:/ accounts / logout处的MultiValueDictKeyError异常 值:“用户名”

1 个答案:

答案 0 :(得分:0)

from django.urls import path
from . import views

urlpatterns = [
    path('login', views.login, name ='login'),
    path('logout', views.login, name ='logout'),
    path('register', views.register, name ='register'),
    path('dashboard', views.dashboard , name = 'dashboard')
]

抱歉,浪费您的时间。 urls.py中的一个小错误使我头痛了三个小时。我感谢你的时间家伙。再次抱歉浪费您的时间。

相关问题