inchirags@gmail.com Chirag's Python Tutorial https://www.chirags.in
*********************************************************************************************
Login, Register and Logout in Python Django with PostgreSQL Database
***********************************************************************************************
YouTube Video:
--- download and install python ---
https://www.python.org/downloads/
and install the "python-3.12.3-amd64.exe" file
1. Setting up Django Project
Assuming you have already created a Django project, ensure that you have the necessary apps installed:
pip install django
2. Creating a Django App
Create a new Django app for handling authentication:
django-admin startproject chirags_project
cd chirags_project
python manage.py startapp accounts
And now open your project in text editor like vscode, sublime etc.
3. Configuring Django Settings
Add the newly created app and required authentication settings in your project's settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'LoginRegisterLogout',
'USER': 'postgres',
'PASSWORD': 'admin@123',
'HOST': 'localhost',
}
}
# settings.py
INSTALLED_APPS = [
...
'accounts',
]
# Authentication settings
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'
4. Implementing User register
In your accounts/views.py:
# accounts/views.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect('home') # Redirect to your home page
else:
form = UserCreationForm()
return render(request, 'users/register.html', {'form': form})
5. Creating Template base.html
Create a base template (accounts/templates/users/base.html) in your accounts app:
<!-- accounts/templates/users/base.html -->
{% block content %}
{% endblock content %}
6. Creating register Template
Create a register template (accounts/templates/users/register.html) in your accounts app:
<!-- accounts/templates/users/register.html -->
{% extends 'users/base.html' %}
{% block content %}
<a href="{% url 'login' %}">Login</a> | <a href="{% url 'register' %}">Register</a>
<h2>Register</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}
7. home.html
<!-- accounts/templates/users/home.html -->
{% extends 'users/base.html' %}
{% block content %}
{% if request.user.is_authenticated %}
<p>{{ request.user.username }}</p>
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<a href="{% url 'login' %}">Login</a>
<a href="{% url 'register' %}">Register</a>
{% endif %}
<h1>Welcome!</h1>
{% endblock %}
8. Implementing Login and Logout Views
Add the following views to your accounts/views.py:
# accounts/views.py
from django.contrib.auth import authenticate, login, logout
def user_login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home') # Redirect to your home page
return render(request, 'users/login.html')
def user_logout(request):
logout(request)
return redirect('home') # Redirect to your home page
def user_home(request):
return render(request, 'users/home.html')
9. Creating Login Template
Create a login template (templates/users/login.html) in your accounts app:
<!-- accounts/templates/users/login.html -->
{% extends 'users/base.html' %}
{% block content %}
<a href="{% url 'login' %}">Login</a> | <a href="{% url 'register' %}">Register</a>
<h2>Login</h2>
<form method="post">
{% csrf_token %}
<label for="username">Username:</label>
<input type="text" name="username" required><br>
<label for="password">Password:</label>
<input type="password" name="password" required><br>
<button type="submit">Login</button>
<a href="{% url 'register' %}">Don't have Click here to create.</a>
</form>
{% endblock %}
10. URL Configuration
Create and Configure URLs in your accounts/urls.py:
# accounts/urls.py
from django.urls import path
from .views import register, user_login, user_logout, user_home
urlpatterns = [
path('', user_home, name='home'),
path('register/', register, name='register'),
path('login/', user_login, name='login'),
path('logout/', user_logout, name='logout'),
]
Include these URLs in your project's urls.py:
# project/urls.py
from django.urls import path, include
urlpatterns = [
...............
path('accounts/', include('accounts.urls')),
]
11. Open pgAdmin (I am using PostgreSQL database) and create database i. e LoginRegisterLogout
12. Run Migrations
Run migrations to apply changes to the database:
python manage.py makemigrations
python manage.py migrate
10. Run the Development Server
Start the development server:
python manage.py runserver
Visit
http://127.0.0.1:8000/accounts/register/
http://127.0.0.1:8000/accounts/login/
and
http://127.0.0.1:8000/accounts/logout/
to test your register, login, and logout functionality.
This is a basic example, and you may wish to customize it according to your project's requirements. This may involve adding features such as user profiles, password reset functionality, and more.
Note : Flow the Process shown in video.
Youtube video Link:
English : https://youtu.be/SSUovpaMxQ4
Hindi : https://youtu.be/jUStHiZqymY
Subscribe and like for more videos:
https://www.youtube.com/@chiragstutorial
Don't forget to, Follow, Like, Share &, Comment
Thanks & Regards,
Chitt Ranjan Mahto "Chirag"
_____________________________________________________________________
Note: All scripts used in this demo will be available in our website.
Link will be available in description.