Просмотр учетных записей.просмотры.вход не вернул объект HttpResponse. Вместо этого он не вернул ни одного

#python #django

Вопрос:

views.py

я пытаюсь создать страницу входа в систему, если имя пользователя и пароль верны, она должна перенаправляться на домашнюю страницу, в противном случае она должна печатать неверные учетные данные, но я не могу посетить страницу входа, на которой она выдает ошибку — Просмотр учетных записей.просмотры.вход не вернул объект HttpResponse. Вместо этого он ничего не вернул.

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



def login(request):
    if request.method=='POST':
        username=request.POST['username']
        password=request.post['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('/')
        else:
            messages.info(request,'invalid credentials')
            return redirect('login')
 

login.html

login.html код-

 <form action="login" method="POST">
        {% csrf_token %}
        <input type="text" name="username" placeholder="Username"><br>
        <input type="password" name="password" placeholder="password"><br>
        <input type="submit">
    </form>
    <div>
        {% for message in messages %}
        <h1>{{message}}</h1>
        {% endfor %}
    </div>
 

urls.py

URL-адрес-

 from django.urls import path
from .import views

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

Ответ №1:

Вам нужно указать, если у вас нет метода POST, то что следует сделать. Добавьте return redirect('login') вне условия метода POST.

 def login(request):
    if request.method=='POST':
        username=request.POST['username']
        password=request.post['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('/')
        else:
            messages.info(request,'invalid credentials')
            return redirect('login')
    return render(request, "login.html")
 

Комментарии:

1. это показывает, что страница не работает перенаправлено слишком много раз

2. удалите return redirect('login') из другой части…

3. похоже, с вашим URL-адресом возникли какие-то проблемы. Вы не указали путь к URL-адресу, если перенаправлены на / …??

4. он должен перенаправить на домашнюю страницу

5. обновлен ответ…. он будет return render(request, "login.html") в конце