Hi Everyone,
In this post, I m showing to you how to use Django Sessions for Login and Logout.
First of all you have to create project dj_admin and then startapp app1. After this you have to add app1 in settings INSTALLED_APPS. Then include apps urls in main project urls.
views.py
from django.shortcuts import render, redirect from django.http import HttpResponse from .models import User # Create your views here. def home(request): if 'user' in request.session: current_user = request.session['user'] param = {'current_user': current_user} return render(request, 'base.html', param) else: return redirect('login') return render(request, 'login.html') def signup(request): if request.method == 'POST': uname = request.POST.get('uname') pwd = request.POST.get('pwd') # print(uname, pwd) if User.objects.filter(username=uname).count()>0: return HttpResponse('Username already exists.') else: user = User(username=uname, password=pwd) user.save() return redirect('login') else: return render(request, 'signup.html') def login(request): if request.method == 'POST': uname = request.POST.get('uname') pwd = request.POST.get('pwd') check_user = User.objects.filter(username=uname, password=pwd) if check_user: request.session['user'] = uname return redirect('home') else: return HttpResponse('Please enter valid Username or Password.') return render(request, 'login.html') def logout(request): try: del request.session['user'] except: return redirect('login') return redirect('login')
urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), path('login/', views.login, name='login'), path('logout/', views.logout, name='logout'), path('signup/', views.signup, name='signup'), ]
models.py
from django.db import models # Create your models here. class User(models.Model): username = models.CharField(max_length=30) password = models.CharField(max_length=50) def __str__(self): return self.username
Code in Templates
1.) create base.html
<!DOCTYPE html> <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> <h1>My Site</h1> <a href="/">Home</a> <span>/</span> {% if current_user %} <a href="{% url 'logout' %}">Logout</a> <hr> <h2>Welcome <span style="color: dodgerblue;">{{current_user}}</span>!</h2> {% else %} <a href="{% url 'login' %}">Login</a> <span>/</span> <a href="{% url 'signup' %}">Sign Up</a> <hr> <h2>Login to access this website!</h2> {% endif %} {% block body %}{% endblock %} </body> </html>
2. create login.html
{% extends 'base.html' %} {% block title %}Login{% endblock %} {% block body %} <h2>Login</h2> <form method="POST"> {% csrf_token %} <input type="text" name="uname" placeholder="User Name"> <br><br> <input type="text" name="pwd" placeholder="Password"> <br><br> <input type="submit" name="submit" value="Login"> </form> {% endblock %}
3. create signup.html
{% extends 'base.html' %} {% block title %}Sing Up{% endblock %} {% block body %} <h2>Sign Up</h2> <form method="POST"> {% csrf_token %} <input type="text" name="uname" placeholder="Username"> <br><br> <input type="text" name="pwd" placeholder="Password"> <br><br> <input type="submit" name="submit" value="Sign Up"> </form> {% endblock %}
Or you can check my GitHub Profile using this Link
Top comments (0)