212 views
asked in Python by
Python Tutorial 1 - Login, Register and Logout in Python Django with PostgreSQL Database

1 Answer

answered by

inchirags@gmail.com  Chirag's Python Tutorial https://www.chirags.in

*********************************************************************************************

Login, Register and Logout in Python Django with PostgreSQL Database

***********************************************************************************************

--- 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

Tutorial Link:

https://www.chirags.in/tutorials/python-django

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.

...