Django is_authenticated и @login_required оба не работают - PullRequest
0 голосов
/ 17 мая 2019

Я пытался сделать некоторые страницы видимыми только при входе в систему.

Я попытался сделать это с помощью:

 def backend(request):
    if request.user.is_authenticated:
        return render(request, 'web/backend-index.html')
    else:
        return redirect(reverse('web:login'))

, а также с помощью:

@login_required
   def backend(request):
   return render(request, 'web/backend-index.html')

ПервыйКод не позволяет мне войти в систему.

Второй код не позволяет мне войти в систему, но URL-адрес также изменяется: http://127.0.0.1:8000/login/?next=/backend/

Если я просто отображаю представление без проверки входа в систему,логин работает нормально, и я перейду на страницу бэкэнда.

Весь код на github: https://github.com/psmaster1/BrainSystems/tree/master/smarthome/web

Я не получаю никаких сообщений об ошибках.Это просто перенаправление на страницу входа ...

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Ваш логин неправильный - поэтому вы никогда не авторизуетесь. Он отправлял запрос POST в неверную конечную точку и не отображал реальную форму. Вот как вы можете визуализировать поля вручную

Измените это на:

<section class="login-form">
    <div class="login-fields">
        <h3>Login</h3>
        <form method="POST">
            {% csrf_token %}

            <div class="form-group">
                {{ login_form.username }}
                <label for="{{ login_form.username.id_for_label }}" class="control-label">Username</label><i class="bar"></i>
                {{ login_form.username.errors }}
            </div>

            <div class="form-group">
                {{ login_form.password }}
                <label for="{{ login_form.password.id_for_label }}" class="control-label">Passwort</label><i class="bar"></i>
                {{ login_form.password.errors }}
            </div>

            <div class="button-container">
                <input type="submit" class="button" value="Login" />
            </div>
        </form>
        <p>Noch nicht Registriert?</p>
        <a href="{% url 'web:register' %}">Registrieren</a>
    </div>
</section>
0 голосов
/ 17 мая 2019

Уже исправили! Проблема заключалась в атрибуте действия в теге формы. Это вызывает проблемы. Просто удалите его из тега формы и сделайте редирект в методе login (). Спасибо, парни! :)

...