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 :