৯.৫ : বিল্ট ইন ফাংশন দিয়ে ইউজার লগইন
আজকে আমরা জানবো কিভাবে একজন ইউজার কে লগইন করাতে পারি। সেটার জন্যে আমরা জ্যাঙ্গো এর বিল্ট ইন 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