Mini Wallet Bagian 5 - Django Session Login

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Mini Wallet Bagian 5 - Django Session Login

Di tutorial sebelumnya kita telah belajar tentang Django User Register.

Di bagian ke 5 dari tutorial Mini Wallet, kita akan belajar tentang cara membuat session login dan juga cara menggunakan decorator auth login.

Seperti biasa untuk mengikuti tutorial ini, pastikan Anda telah mengikuti tutorial sebelumnya terkait dengan Django User Register.

A) Template User Login


Buat file dengan nama login.html di direktori templates/user

 

{% load static %}
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<title>Form Register New User</title>
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link href="{% static 'css/user/register.css' %}" rel="stylesheet">

<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}

@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
</head>
<body class="text-center">
<main class="form-register">
<form method="post" action="">
{% csrf_token %}
<h1 class="h3 mb-3 fw-normal">Form Login User</h1>
<div class="form-floating">
<input
type="email"
class="form-control"
name="email"
id="email"
placeholder="name@example.com"
required>
<label for="email">Email address</label>
</div>
<div class="form-floating">
<input
type="password"
class="form-control"
name="password"
id="password"
placeholder="Password"
required>
<label for="password">Password</label>
</div>
<button class="w-100 btn btn-lg btn-primary" type="submit">Login</button>
</form>
</main>
</body>
</html>

 

B) Django Class Based View User Login


Buka file views.py di app user, kemudian buat class LoginUser().

class LoginUser(TemplateView):
template_name = 'user/login.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context

def post(self, *args, **kwargs):
context = self.get_context_data()
return super(TemplateView, self).render_to_response(context)

 

C) Decorator Auth Login


a) Modifikasi class IndexTemplateView()

Di bagian ini modifikasi class IndexTemplateView() menjadi class DashboardView().

Setelah Anda mengubah nama class, selanjutnya buat file dengan nama ulrs.py

from django.urls import path
from home import views

urlpatterns = [
path('dashboard', views.DashboardView.as_view(), name='dashboard-page'),
]

Kemudian ubah default index web menjadi halaman login, modifikasi urls.py yang ada di main project menjadi seperti dibawah ini :

urlpatterns = [
path('', views.LoginUser.as_view(), name='index_page'),
path('accounts/login/', views.LoginUser.as_view(), name='user_login'),
path('users/', include('users.urls')),
path('home/', include('home.urls')),
]

b) Method dispatch() 

Tambahkan method dispatch() ke dalam class DashboardView()

def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)

 

c) Import library 


from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required


Untuk memproteksi halaman dashboard gunakan method login_required sisipkan di antara method dispatch()

 @method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)

D) Hapus Session Login


Buat sebuah fungsi untuk menghapus session login dengan nama userLogout().

def userLogout(request):
try:
request.session.clear()
except Exception as e:
pass
return HttpResponseRedirect('/accounts/login/')

E) Video Tutorial


Githubhttps://github.com/halovina/e-wallet/tree/django-session-login

Baca artikel lainya:


  1. Mini Wallet Bagian 1 - Django Template dan Static File

  2. Mini Wallet Bagian 2 - Django Template Base HTML

  3. Mini Wallet Bagian 3 - Django Model dan Koneksi Database Mysql

  4. Mini Wallet Bagian 4 - Django User Register

  5. Tutorial bassic Mysql bagian 1 - Create Read Update Delete

  6. Tutorial bassic Mysql bagian 2 - Inner, Left, Right, Cross Join

  7. Tutorial bassic Mysql bagian 3 - Filtering Data

  8. Tutorial bassic Mysql bagian 4 - Grouping Data 

  9. Tutorial bassic Mysql bagian 5 - Operator dan Clausa

  10. Tutorial bassic Mysql bagian 6 - Replace Statement

  11. Tutorial bassic Mysql bagian 7 - Constraint Data

  12. Tutorial bassic Mysql bagian 8 - Mengubah Struktur tabel

  13. Tutorial bassic Mysql bagian 9 - Subquery

  14. Tutorial bassic Mysql bagian 10 - Virtual Tabel

  15. Tutorial bassic Mysql bagian 11 - Control Flow Function

  16. Membuat service OTP bagian 1 - OTP dan PIN

  17. Membuat service OTP bagian 2 - Sequence Diagram

  18. Membuat service OTP bagian 3 - Model dan Serializer

  19. Membuat  service OTP bagian 4 - Validate OTP

  20. Membuat  service OTP bagian 5 - Api Client Service

  21. Membuat service user login bagian 1 - Konfigurasi Database

  22. Membuat service user login bagian 2 - Serializer dan JWT

  23. Membuat CRUD service product bagian 1 - Models Product

  24. Membuat CRUD service product bagian 2 - Function Serializer

  25. Membuat CRUD service product bagian 3 - Api Client Service

  26. Membaut CRUD service product bagian 4 - Auth User

  27. Membuat CRUD service product bagian 5 - TDR File Log

  28. Membuat CRUD service product bagian 6 - Unit Test

  29. Membuat service user register bagian 1 - Django

  30. Membuat Service user register bagian 2 - Django

  31. Membuat service filter dan download file CSV di django

  32. Django upload file menggunakan FileSystemStorage