Sebelum nya kita telah membuat App “polls” menggunakan AdminLte, sekarang kita akan membuat App “pages” menggunakan AdminLTE. App akan berisi halaman Login, Welcome(harus dalam posisi login), dan Logout.
Sekenario
Jika authentikasi tidak terpenuhi, app akan mengarahkan ke page login, jika terpenuhi akan masuk ke halaman index, dan jika tombol logout di klik maka session akan direset dan user akan kembali ke halaman login
Membuat App pages:
python manage.py startapp pages
Views
pages/views.py
from django.shortcuts import get_object_or_404, render, redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model
@login_required(login_url='/login')
def index(request):
return render(request, 'pages/index.html')
def login_view(request):
if request.method=='POST':
User = get_user_model()
email = request.POST['email']
username = User.objects.get(email=email).username
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect("/")
else:
return render(request, 'pages/login.html', {})
return render(request, 'pages/login.html')
def logout_view(request):
logout(request)
return redirect('/login')
Perhatikan baris def login_view dan logout_view yang ditandai, penamaan tidak boleh sama dengan lib login dan logout yang diimport karena akan bentrok dengan fungsi login dan logout.
Fungsi @login_required(login_url=’/login’) sebelum def index menandakan halaman tersebut dapat dibuka hanya jika kondisi authenticate terpenuhi.
Jika sebelumnya kita membuat MTV dengan tampilan ala kadarnya, kali ini kita akan membuat tampilan yang menarik menggunakan AdminLTE3
Base Template merupakan html static yang nantinya akan digunakan untuk semua app, supaya tidak perlu ditulis berulang-ulang pada setiap app, kita akan menggunakan metode Base Template.
copy dist/* ke folder static copy plugins ke folder static copy index.html ke templates/base.html
lalu buka localhost/polls hasilnya seperti di bawah ini
Untuk memberi tahu kepada django bahwa kita akan menggunakan staticfiles yang ada pada folder static, maka kita harus merubah setting pada settings.py yang ada pada project django_blog kita.
Tambahkanlah setting berikut ini pada bagian bawah settings.py yang kita miliki
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Selanjutnya, kita akan memanggil file-file static tersebut tersebut dalam template kita dengan cara:
Kalau anda pernah menggunakan Framework MVC biasanya metode ini disebut Controller, tetapi kalau di sini fungsi Controller diletakan pada file views.py, mungkin ini perbedaan konsep MVC dengan MTV pada Django.
Contoh sederhana
View
Buat fungsi View pada polls/views.py, lalu tambahkan baris berikut :
def detail(request, question_id):
return HttpResponse("You're looking at question %s." % question_id)
def results(request, question_id):
response = "You're looking at the results of question %s."
return HttpResponse(response % question_id)
def vote(request, question_id):
return HttpResponse("You're voting on question %s." % question_id)
Buka file polls/ulrls.py, lalu tambahkan baris berikut :
Sebelumnya anda harus tau perbedaan antara projek dan aplikasi? Sebuah aplikasi adalah aplikasi Jaringan yang melakukan sesuatu — misalnya, sebuah sistem Polls yang akan dibuat nanti. Sebuah proyek adalah kumpulan dari konfigurasi dan aplikasi-aplikasi untuk situs jaringan tertentu. Sebuah projek dapat mengandung banyak aplikasi. Sebuah aplikasi dapat di beberapa proyek.
Kondisi
Project myapp sudah dibuat
Aplikasi Polls(pooling)
Masih di direktori virtualenv sebelumnya new_version/myapp. Buat app polls dengan mengetikan perintah berikut :
OS Windows 10 Home 64bit Python 3.8.2 Django 3.0.5
Mengapa Python??
Python merupakan bahasa pemrograman yang sangat populer saat ini, jika anda mengetik Programing Language terpopuler 2020, maka Python akan menempati peringkat nomer 1.
Django
Django merupakan salah satu Web Framework terpopuler untuk Python saat ini.
Installasi
Sebelum menginstall Django pastinya harus menginstall Python terlebih dahulu silakan masuk ke website nya install berdasarkan panduan OS masing-masing.
Setelah Python diinstal kita akan menyiapkan alat tambahan yaitu:
Pip adalah sebuah tool yang akan kita gunakan untuk manajemen paket python. Termasuk juga menginstall Django
Virtual Environment adalah sebuah tools yang digunakan untuk membuat sebuah wadah yang terisolasi dari dunia luar, sehingga masing-masing project dapat memiliki environment nya sendir-sendiri misal: Project A(Python 2.7, Django 1.7, Mysql 5.0) dan Project B( Python 3.8.2, Django 1.8, Mysql 5.5 )
Install Pip & Virtual Environment
Buka terminal (linux/Mac) atau command prompt (windows) dan ketikkan perintah dibawah ini.
easyinstall pip
Setelah pip terinstall, lalu install virtualenv
pip install virtualenv
Setelah selesai menginstal venv , buatlah direktori baru dan masuk ke direktori tersebut. Misal untuk contoh kasus diatas saya buat direktori seperti di bawah ini:
mkdir new_version
Inisialisasi venv ke folder new_version
python -m venv new_version
ls new_version
Akan ada file/foder env baru pada folder tsb(Include, Lib, Scripts, pyvenv.cfg).
Aktifkan venv untuk folder tsb:
new_version/Sripts/activate
Jika menggunakan Windows Powershell(“Run as Administrator”) lalu ketik command Set-ExecutionPolicy RemoteSigned.
venv new_version sedang aktif
Install Django
pip install django
Membuat Project
masuk ke direktori new_version, lalu buat project
cd new_version
django-admin startproject myapp
masuk ke direktori myapp, lalu Test jalankan program