Большое спасибо за помощь.

Я сделал простую форму входа в django. После ввода правильных данных она перебрасывает на другую страницу (result.html), но вы также можете попасть на страницу, набрав адрес страницы в браузере. Я не знаю, как сделать так, чтобы страница была доступна только после входа в систему.

home.html

{% extends "index.html" %}

{% block content %}

<div class="card border-secondary">
  <div class="card-body">
    <h4 class="card-title">Login form</h4>

    <form method="post">
        {% csrf_token %}
        <label>Login</label>
        <input class="m-3" type="text" name="txtLogin" placeholder="login (admin)">
        <br>
        <label>Password</label>
        <input class="m-3" type="text" name="txtPassword" placeholder="Password (admin)">
        <hr>
        <button name="btnSend" type="submit" class="btn btn-secondary">Log in</button>

    </form>

  </div>
</div>

views.py

def home(request):
    if request.method == 'POST' and 'btnSend' in request.POST :
        login = request.POST.get('txtLogin')
        password = request.POST.get("txtPassword")
        if login=="admin" and password=="admin":
            return HttpResponseRedirect('/main/result')
        else:
            return HttpResponseRedirect('/main/home')
            


    template = loader.get_template('home.html')
    context={}
    return HttpResponse(template.render(context,request))


def result(request):
    template = loader.get_template('result.html')
    context={
    }
    return HttpResponse(template.render(context,request))

Существует декоратор @login_required

https://docs.djangoproject.com/en/4.0/topics/auth/default/#the-login-required-decorator

Кроме того, в Django не так обрабатываются логины/аутентификация.

Вернуться на верх