MultiValueDictKeyError - Django - PullRequest
       4

MultiValueDictKeyError - Django

0 голосов
/ 08 февраля 2020

У меня проблема с получением MultiValueDictKeyError в Django. Я пытаюсь выйти из системы с моего сайта, поэтому я сделал следующие коды.

В 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>

Вот моя функция входа в систему и выхода из нее, скажем, "account / 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')

Среда:

Метод запроса: URL запроса POST: http://127.0.0.1: 8000 / account / 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 ',' lists.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.clickjackingFX OptionsMiddleware ']

Traceback (последний вызов был последним): файл "C: \ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ utils \ datastructures.py", строка 76, в getitem list_ = super (). getitem (ключ)

Во время обработки вышеуказанного исключения ('username') возникло другое исключение: Файл " C: \ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ core \ handlers \ exception.py ", строка 34, во внутреннем ответе = get_response (запрос) Файл" C: \ Пользователи \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ core \ handlers \ base.py ", строка 115, в _get_response response = self.process_exception_by_middleware (e, запрос) Файл" C: \ Users \ DD \ Desktop \ btre \ venv \ lib \ site-packages \ django \ core \ handlers \ base.py ", строка 113, в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs) Файл" C: \ Users \ DD \ Desktop \ btre \ accounts \ views.py ", строка 12, в логине username = request.POST ['username'] Файл" C: \ Users \ DD \ Desktop \ btre \ venv \ lib \ сайт-пак kages \ django \ utils \ datastructures.py ", строка 78, в getitem повышение MultiValueDictKeyError (key)

Тип исключения: MultiValueDictKeyError at / accounts / logout Значение исключения: 'имя пользователя'

1 Ответ

0 голосов
/ 08 февраля 2020
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 вызывает у меня головную боль в течение трех часов. Я ценю ваше время, ребята. Снова извиняюсь за потраченное время.

...