৯.৫ : বিল্ট ইন ফাংশন দিয়ে ইউজার লগইন

আজকে আমরা জানবো কিভাবে একজন ইউজার কে লগইন করাতে পারি। সেটার জন্যে আমরা জ্যাঙ্গো এর বিল্ট ইন Authentication ফরম ইউজ করবো। এই ফরম এ দুইটা ফিল্ড থাকে username আর password। লগইন বলতে আমরা বুঝাচ্ছি যে একজন ইউজার এর আমাদের ওয়েবসাইট এ একাউন্ট আছে, তার থেকে আমরা username password নিয়ে চেক করে দেখবো আসলেই একাউন্ট আছে কিনা, যদি থাকে তাইলে তাকে লগইন করাবো login ফাংশন দিয়ে এবং নির্দিষ্ট কিছু পেজ এ অ্যাকসেস দিবো আর নাইলে বলবো invalid password, username ।

def user_login(request):
    if request.method == 'POST':
        form = AuthenticationForm(request=request, data=request.POST)
        if form.is_valid():
            name = form.cleaned_data['username']
            userpass = form.cleaned_data['password']
            # check kortechi user database e ache kina
            user = authenticate(username=name, password=userpass)
            if user is not None:
                login(request, user)
                return redirect('profile')  # profile page e redirect korbe
    else:
        form = AuthenticationForm()
    return render(request, './login.html', {'form': form})

এখন আমরা আমাদের navbar এ কিছু ইন্টারেস্টিং কাজ করবো। যদি কোনো ইউজার লগইন করে তাইলে তাকে আমরা navbar এ profile আর logout বাটন দেখাবো আর যদি loggedin ইউজার না হয় তাইলে তাকে signup, login বাটন দেখাবো। Html এ is_authenticated ফাংশন দিয়ে আমরা চেক করতে পারি যে ওই ইউজার লগইন করা অবস্থায় আছে কিনা।

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <!-- Bootstrap CSS -->
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
      crossorigin="anonymous"
    />
    <title>Hello, world!</title>
  </head>
  <body>
    <nav class="navbar navbar-light bg-dark">
      <div class="container-fluid">
        <a class="navbar-brand text-white">Navbar</a>
        <div class="d-flex">
        
          {% if user.is_authenticated %}
          <a href="{% url 'profile' %}" class="btn btn-outline-warning text-white" type="submit">Profile</a>
          <a href="{% url 'logout' %}" class="btn btn-outline-warning text-white" type="submit">Logout</a>
          {% else%}
          <a href="{% url 'signup' %}" class="btn btn-outline-success mx-4 text-white">Sign Up</a>
          <a href="{% url 'login' %}" class="btn btn-outline-warning text-white" type="submit">Login</a>
          {% endif %}
          
        </div>
      </div>
    </nav>
    {% block body %} {% endblock %}

    <script
      src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
      integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
      crossorigin="anonymous"
    ></script>

  </body>
</html>

Last updated