podstrona dostępna tylko po zalogowaniu.

0

Hej, próbuje zrobić prosty panel logowania z zdefiniowanymi danymi (admin, admin), gdzie po zalogowaniu przeniesie użytkownika na podstronę(results.html) dostępną tylko po wpisaniu tych danych i kliknięciu "Login". Podstrona powinna być niedostępna po wpisaniu adresu w pasku wyszukiwarki. Logowanie działa, jak ktoś wpiszę błędne dane to nie następuje przekierowanie, ale można wpisać /result.html i strona jest dostępna :/
home.html

{% extends "index.html" %}

{% block content %}

<div class="card border-secondary">
  <div class="card-body">
    <h4 class="card-title">Panel Logowania</h4>

    <form method="post">
        {% csrf_token %}
        <label>Login</label>
        <input class="m-3" type="text" name="xLogin" placeholder="login">
        <br>
        <label>Hasło</label>
        <input class="m-3" type="text" name="xPassword" placeholder="hasło">
        <hr>
        <button name="btnSend" type="submit" class="btn btn-secondary">Log in</button>

    </form>

  </div>
</div>


{% endblock %}

views.py

def home(request):
    if request.method == 'POST' and 'btnSend' in request.POST :
        login = request.POST.get('xLogin')
        password = request.POST.get("xPassword")
        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))
39

Strzelam, że chcesz zrobić widok tylko dla admina więc zwyczajnie lepiej stworzyć warunek request.user.is_superuser i na tej podstawie dopasować resztę logiki.

Strona Ci się wyświetla bo weryfikujesz dane w przypadku zapytania typu POST. Zwykłe wyświetlenie strony jest handlowane przez GET.

A w ogóle to najlepiej, żebyś zaczął używać gotowych widoków z django.views.generic oraz autentykacji z django.contrib.auth.mixins :P To wszystko co chcesz zrobić zostało już zaimplementowane w standardzie, więc nie ma sensu wymyślać koła na nowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1