SlideShare une entreprise Scribd logo
1  sur  28
Python
WEB DEVELOPMENT FRAMEWORK
Why Python?
 Clear and Expressive Syntax
 Indentasi harus rapi
 Batteries Included
 Bisa untuk Object Oriented ataupun Fungsional
 3 Compiler Utama:
 C (CPython)
 Java (Jython)
 Iron Python (.NET)
 Python Installer Package (PIP) yang mudah digunakan
What are the Batteries?
 Meskipun Bahasa pemrograman seharusnya tidak menjadi
batasan, namun jika menguasai satu Bahasa pemrograman
untuk semua kerjaan cukup menyenangkan juga.
 Tersedia Library Python untuk:
 Numerical Programming
 Scientific Programming
 Machine Learning Algorithm
 Image Processing
 Web Scrapping
 Natural Language Processing
 Web Development Framework
Python for Scientific
Machine Learning
Web Scrapping
Python NLTK
Web Development
Django
DEEP INTRODUCTION TO THE FRAMEWORK
Django is …
 Python Web Application Framework, for a perfectionist
with deadline
 Ridiculously Fast
 Fully Loaded
 Reassuringly Secure
 Exceedingly scalable
 Incredibly Versatile
 Yang udah make Django:
 Disqus, Instagram, National Geographic, NASA, Pinterest,
OpenStack, The Guardian, The New York Times
Fully Loaded with….
 MVC  MTV (Model, Template, View)
 Object Relational Mapper
 Automatic Admin Interface
 Robust Template
 Internationalization
 Caching
 Validation & CSRF Protection
 GeoDjango
 Etc, etc, etc ……..
MVC Should be…
 Fat Model
 Semua logika pengambilan data disentralkan di Model, jangan
ditaruh di Controller, apalagi View
 Demi keseragaman data
 Thin Controller
 Hanya mengambil data dari request
 Meneruskan ke model
 Menampilkan hasil dari model
 Dumb View
 Cukup menampilkan data, minim sekali logic
Instalasi Django
 Online Connected Computer
 Install Python
 Install PIP
 Stand Alone Computer
 Install Python
 Download Django Package
 Install Package
 Verify Installation
> pip install Django
> import Django
> print(django.get_version())
Create Project
 Set direktori Python dan Python->Scripts ke dalam default
path
 Karena, kita akan, menggunakan command prompt untuk
membuat kerangka project
 Setelah berhasil kita akan mendapatkan direktori Django
project seperti berikut:
> django-admin startproject BlogApp
BlogApp/
manage.py
BlogApp/
__init__.py
settings.py
urls.py
wsgi.py
Create App
 Setiap project Django dapat memiliki beberapa App yang
berperan sebagai modul pada project tersebut.
 Untuk membuat app, masuk ke dalam direktori project kita,
kemudian ketikkan perintah berikut
 Agar dapat di-kenali oleh project, masukkan nama aplikasi
ke dalam settings.py
> python manage.py startapp blog
Add Models
 Model adalah class untuk berinteraksi secara langsung
dengan basis data.
 Django menyediakan class model dengan ORM yang
powerful dan mudah diintegrasikan. (IMHO: it’s even better
than Rails and Laravel)
 Ada 3 model yang akan kita buat untuk latihan ini, yaitu
Article, Category, dan Comment
 Category bisa memiliki banyak Article
 Dan Article bisa memiliki banyak Komentar
 Article di tulis oleh seorang User
 Sedangkan penulis Category dan Comment tidak terhubung
dengan User
Model Scripts
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
title = models.CharField(max_length=50)
description = models.TextField(null=True, blank=True)
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
category = models.ForeignKey(Category)
author = models.ForeignKey(User)
class Comment(models.Model):
author = models.CharField(max_length=100)
content = models.TextField()
article = models.ForeignKey(Article, default=1)
Migrate & Run
 Selesai merancang model, saatnya generate database script
sekalian database-nya
 Ketikkan perintah berikut di shell:
 Jalankan Django untuk melihat hasilnya
> python manage.py makemigrations
> python manage.py migrate
> python manage.py runserver
Basic Admin
 Django menyediakan automatic admin page
 Tidak seperti di Yii, Rails, atau Code Igniter yang hanya
menyediakan basic Scaffolding, admin page Django benar-
benar powerful
 Mudah di-customize dan usable
 Untuk dapat mengakses halaman admin, buatlah user
superadmin terlebih dahulu
 Setelah menjalankan server kembali, halaman admin secara
default dapat diakses di:
 localhost:8000/admin
> python manage.py createsuperuser
Admin Page untuk Model
 Pada admin.py, ketikkan perintah python berikut:
from django.contrib import admin
from .models import Category, Article, Comment
class CategoryAdmin(admin.ModelAdmin):
list_display = ('title', 'description')
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'category', 'author')
class CommentAdmin(admin.ModelAdmin):
list_display = ('author', 'content', 'article')
admin.site.register(Category, CategoryAdmin)
admin.site.register(Article, ArticleAdmin)
admin.site.register(Comment, CommentAdmin)
Modifikasi Dikit
 Agar semua perintah menjadi Bahasa Indonesia, ubah
pilihan Bahasa di settings.py dari “en-us” menjadi “id”
 Agar kategori terlihat titlenya di admin Article, override
method __unicode__() pada model Category dan model
yang lain
 Selanjutnya agar nama model familiar dengan Bahasa
Indonesia, tambahkan inner class Meta sebagai berikut
pada setiap model:
class Meta:
verbose_name = "Kategori"
verbose_name_plural = "List Kategori"
Inline Comment
 Akan lebih bagus juga list komentar juga tampil di setiap
artikelnya. Caranya gunakan inline admin:
class CommentInline(admin.StackedInline):
model = Comment
extra = 1
class ArticleAdmin(admin.ModelAdmin):
...
inlines = [CommentInline]
Number of Comments
 Ingin menampilkan informasi tambahan yang belum
termasuk dalam attribute, tambahkan saja method baru
pada modelnya.
 Misalkan kita ingin menampilkan berapa banyak komentar
yang telah diberikan pada artikel tersebut.
class Article(models.Model):
...
def num_of_comments(self):
return self.comment_set.all().count()
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'category', 'author', 'num_of_comments')
inlines = [CommentInline]
Creator is Current User
 Seharusnya kita tidak perlu menampilkan field penulis di
form artikel, dan penulisnya otomatis adalah user yang
sedang login.
 Dus kita tidak perlu lagi inputan author
 Dan kita perlu merubah sedikit aturan save di admin-nya:
class ArticleAdmin(admin.ModelAdmin):
...
fields = ['title', 'content', 'category']
def save_model(self, request, obj, form, change):
obj.author = request.user
obj.save()
Kustomisasi Lain
 Menampilkan hanya artikel yang saya tulis
 Menambahkan search
 Menambahkan filter kategori
 Membuat fungsi publish masal
 Membuat field & inline readonly
 Membuat recycle bin (plugin tambahan)
 Dan banyak lagi
 Dan banyak lagi
Use Different Admin UI
 Tidak puas dengan desain tampilan admin, kita bisa
merubah sendiri dengan melakukan overriding template
asli.
 Tapi kalau mau yang sudah ada, bisa nambah plugin juga sih
 Django-Suit:
 Django-wpadmin:
 Tambahkan django.core.context_processors.request pada
‘template’  ‘context_processors’
> pip install django-suit
> pip install django-wpadmin
What to learn After
 Templating
 View (Function-based & Class-Based)
 Form Validation
 Model & Queries
 Security
 Internationalization
 Performance
 Plugins, plugins, plugins
Last Words

Contenu connexe

Tendances

Analisa website Traveloka - Tugas IMK
Analisa website Traveloka - Tugas IMKAnalisa website Traveloka - Tugas IMK
Analisa website Traveloka - Tugas IMKMiftahul Muttaqin
 
Tugas normalisasi imaika penjualan komputer
Tugas normalisasi   imaika penjualan komputerTugas normalisasi   imaika penjualan komputer
Tugas normalisasi imaika penjualan komputerHamdi Hamdi
 
Diagram erd restaurant
Diagram erd restaurantDiagram erd restaurant
Diagram erd restaurantRistaMeytasari
 
Perencanaan Database Administrasi Sekolah
Perencanaan Database Administrasi SekolahPerencanaan Database Administrasi Sekolah
Perencanaan Database Administrasi SekolahAmbar Ayu Susilowati
 
Koneksi PHP ke Database MySQL menggunakan MySQLi Extension
Koneksi PHP ke Database MySQL menggunakan MySQLi ExtensionKoneksi PHP ke Database MySQL menggunakan MySQLi Extension
Koneksi PHP ke Database MySQL menggunakan MySQLi ExtensionI Putu Hariyadi
 
Tugas IMK : Ragam Dialog
Tugas IMK : Ragam DialogTugas IMK : Ragam Dialog
Tugas IMK : Ragam DialogPio
 
Algoritma dan Struktur Data - Abstract Data Type
Algoritma dan Struktur Data - Abstract Data TypeAlgoritma dan Struktur Data - Abstract Data Type
Algoritma dan Struktur Data - Abstract Data TypeKuliahKita
 
Rpl 09 - spesifikasi formal
Rpl   09 - spesifikasi  formalRpl   09 - spesifikasi  formal
Rpl 09 - spesifikasi formalFebriyani Syafri
 
PELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIPELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIBrader Kampus
 
Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"
Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"
Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"Melina Krisnawati
 
contoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyacontoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyastephan EL'wiin Shaarawy
 

Tendances (20)

Analisa website Traveloka - Tugas IMK
Analisa website Traveloka - Tugas IMKAnalisa website Traveloka - Tugas IMK
Analisa website Traveloka - Tugas IMK
 
Tugas normalisasi imaika penjualan komputer
Tugas normalisasi   imaika penjualan komputerTugas normalisasi   imaika penjualan komputer
Tugas normalisasi imaika penjualan komputer
 
PDO (php data object)
PDO (php data object)PDO (php data object)
PDO (php data object)
 
Sistem Basis Data model data relasional
Sistem Basis Data model data relasionalSistem Basis Data model data relasional
Sistem Basis Data model data relasional
 
Use skenario
Use skenarioUse skenario
Use skenario
 
Diagram erd restaurant
Diagram erd restaurantDiagram erd restaurant
Diagram erd restaurant
 
Perencanaan Database Administrasi Sekolah
Perencanaan Database Administrasi SekolahPerencanaan Database Administrasi Sekolah
Perencanaan Database Administrasi Sekolah
 
Koneksi PHP ke Database MySQL menggunakan MySQLi Extension
Koneksi PHP ke Database MySQL menggunakan MySQLi ExtensionKoneksi PHP ke Database MySQL menggunakan MySQLi Extension
Koneksi PHP ke Database MySQL menggunakan MySQLi Extension
 
Fungsi (function)
Fungsi (function)Fungsi (function)
Fungsi (function)
 
Normalisasi Basis Data
Normalisasi Basis DataNormalisasi Basis Data
Normalisasi Basis Data
 
Tugas IMK : Ragam Dialog
Tugas IMK : Ragam DialogTugas IMK : Ragam Dialog
Tugas IMK : Ragam Dialog
 
PEMOGRAMAN WEB & PERANGKAT BERGERAK
PEMOGRAMAN WEB & PERANGKAT BERGERAKPEMOGRAMAN WEB & PERANGKAT BERGERAK
PEMOGRAMAN WEB & PERANGKAT BERGERAK
 
ERD rumah sakit
ERD rumah sakitERD rumah sakit
ERD rumah sakit
 
set associative mapping
set associative mappingset associative mapping
set associative mapping
 
Algoritma dan Struktur Data - Abstract Data Type
Algoritma dan Struktur Data - Abstract Data TypeAlgoritma dan Struktur Data - Abstract Data Type
Algoritma dan Struktur Data - Abstract Data Type
 
Rpl 09 - spesifikasi formal
Rpl   09 - spesifikasi  formalRpl   09 - spesifikasi  formal
Rpl 09 - spesifikasi formal
 
Analisis Kebutuhan
Analisis KebutuhanAnalisis Kebutuhan
Analisis Kebutuhan
 
PELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIPELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TI
 
Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"
Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"
Laporan pembuatan Final Project (Java - Netbeans) "Rental CD"
 
contoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyacontoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnya
 

En vedette

Python geek Event Description
Python geek Event DescriptionPython geek Event Description
Python geek Event DescriptionParbhat Puri
 
2010.1 mandriva linux_installation_using_dual_cd
2010.1 mandriva linux_installation_using_dual_cd2010.1 mandriva linux_installation_using_dual_cd
2010.1 mandriva linux_installation_using_dual_cdSt Louis MUG
 
2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven ProgrammingLin Jen-Shin
 
Python in Computer Vision
Python in Computer VisionPython in Computer Vision
Python in Computer VisionBrian Thorne
 
Python PPT
Python PPTPython PPT
Python PPTEdureka!
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 

En vedette (15)

OASIS
OASISOASIS
OASIS
 
Python geek Event Description
Python geek Event DescriptionPython geek Event Description
Python geek Event Description
 
2010.1 mandriva linux_installation_using_dual_cd
2010.1 mandriva linux_installation_using_dual_cd2010.1 mandriva linux_installation_using_dual_cd
2010.1 mandriva linux_installation_using_dual_cd
 
Anyevent
AnyeventAnyevent
Anyevent
 
2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming
 
Python in Computer Vision
Python in Computer VisionPython in Computer Vision
Python in Computer Vision
 
Python PPT
Python PPTPython PPT
Python PPT
 
An Introduction to Python Concurrency
An Introduction to Python ConcurrencyAn Introduction to Python Concurrency
An Introduction to Python Concurrency
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 

Similaire à Python Django Web Development Framework

Tutorial Aplikasi android client server menggunakan REST API Django
Tutorial Aplikasi android client server menggunakan REST API DjangoTutorial Aplikasi android client server menggunakan REST API Django
Tutorial Aplikasi android client server menggunakan REST API DjangoAbdul Aziz Subayu
 
Resume aplinet oop mvc
Resume aplinet oop mvcResume aplinet oop mvc
Resume aplinet oop mvcSam_Azzam
 
Slide struktur codeigneter
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneterCecilia Cintahta
 
analisis data tikus percobaan materi informatika kelas X.pptx
analisis data tikus percobaan materi informatika kelas X.pptxanalisis data tikus percobaan materi informatika kelas X.pptx
analisis data tikus percobaan materi informatika kelas X.pptxrulimustiyawan37
 
Tugas 4 debbie mistikaweni 1412510982
Tugas 4 debbie mistikaweni   1412510982Tugas 4 debbie mistikaweni   1412510982
Tugas 4 debbie mistikaweni 1412510982debbie95
 
Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045Sugeng Nirwoto
 
Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045Sugeng Nirwoto
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekimam arifin
 
Codeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryCodeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryboys of separato
 
0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptxBom Bom
 
Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316septianarul
 
Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Ridwan Fadjar
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ciWira Hul
 
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]resaarisiswo
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONDimas Prawira
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrudmales Aja
 
Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)Linda Lestari
 

Similaire à Python Django Web Development Framework (20)

Tutorial Aplikasi android client server menggunakan REST API Django
Tutorial Aplikasi android client server menggunakan REST API DjangoTutorial Aplikasi android client server menggunakan REST API Django
Tutorial Aplikasi android client server menggunakan REST API Django
 
Resume aplinet oop mvc
Resume aplinet oop mvcResume aplinet oop mvc
Resume aplinet oop mvc
 
Makalah java
Makalah javaMakalah java
Makalah java
 
Slide struktur codeigneter
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneter
 
analisis data tikus percobaan materi informatika kelas X.pptx
analisis data tikus percobaan materi informatika kelas X.pptxanalisis data tikus percobaan materi informatika kelas X.pptx
analisis data tikus percobaan materi informatika kelas X.pptx
 
Tugas 4 debbie mistikaweni 1412510982
Tugas 4 debbie mistikaweni   1412510982Tugas 4 debbie mistikaweni   1412510982
Tugas 4 debbie mistikaweni 1412510982
 
Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045
 
Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045Tugas pbw 1310652044_1310652045
Tugas pbw 1310652044_1310652045
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objek
 
Codeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryCodeigniter lanjut helper dan library
Codeigniter lanjut helper dan library
 
0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx
 
Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316
 
Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1
 
Resume aplinet
Resume aplinetResume aplinet
Resume aplinet
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
 
PBO Pratikum 1
PBO Pratikum 1PBO Pratikum 1
PBO Pratikum 1
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrud
 
Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)
 

Python Django Web Development Framework

  • 2. Why Python?  Clear and Expressive Syntax  Indentasi harus rapi  Batteries Included  Bisa untuk Object Oriented ataupun Fungsional  3 Compiler Utama:  C (CPython)  Java (Jython)  Iron Python (.NET)  Python Installer Package (PIP) yang mudah digunakan
  • 3. What are the Batteries?  Meskipun Bahasa pemrograman seharusnya tidak menjadi batasan, namun jika menguasai satu Bahasa pemrograman untuk semua kerjaan cukup menyenangkan juga.  Tersedia Library Python untuk:  Numerical Programming  Scientific Programming  Machine Learning Algorithm  Image Processing  Web Scrapping  Natural Language Processing  Web Development Framework
  • 10. Django is …  Python Web Application Framework, for a perfectionist with deadline  Ridiculously Fast  Fully Loaded  Reassuringly Secure  Exceedingly scalable  Incredibly Versatile  Yang udah make Django:  Disqus, Instagram, National Geographic, NASA, Pinterest, OpenStack, The Guardian, The New York Times
  • 11. Fully Loaded with….  MVC  MTV (Model, Template, View)  Object Relational Mapper  Automatic Admin Interface  Robust Template  Internationalization  Caching  Validation & CSRF Protection  GeoDjango  Etc, etc, etc ……..
  • 12. MVC Should be…  Fat Model  Semua logika pengambilan data disentralkan di Model, jangan ditaruh di Controller, apalagi View  Demi keseragaman data  Thin Controller  Hanya mengambil data dari request  Meneruskan ke model  Menampilkan hasil dari model  Dumb View  Cukup menampilkan data, minim sekali logic
  • 13. Instalasi Django  Online Connected Computer  Install Python  Install PIP  Stand Alone Computer  Install Python  Download Django Package  Install Package  Verify Installation > pip install Django > import Django > print(django.get_version())
  • 14. Create Project  Set direktori Python dan Python->Scripts ke dalam default path  Karena, kita akan, menggunakan command prompt untuk membuat kerangka project  Setelah berhasil kita akan mendapatkan direktori Django project seperti berikut: > django-admin startproject BlogApp BlogApp/ manage.py BlogApp/ __init__.py settings.py urls.py wsgi.py
  • 15. Create App  Setiap project Django dapat memiliki beberapa App yang berperan sebagai modul pada project tersebut.  Untuk membuat app, masuk ke dalam direktori project kita, kemudian ketikkan perintah berikut  Agar dapat di-kenali oleh project, masukkan nama aplikasi ke dalam settings.py > python manage.py startapp blog
  • 16. Add Models  Model adalah class untuk berinteraksi secara langsung dengan basis data.  Django menyediakan class model dengan ORM yang powerful dan mudah diintegrasikan. (IMHO: it’s even better than Rails and Laravel)  Ada 3 model yang akan kita buat untuk latihan ini, yaitu Article, Category, dan Comment  Category bisa memiliki banyak Article  Dan Article bisa memiliki banyak Komentar  Article di tulis oleh seorang User  Sedangkan penulis Category dan Comment tidak terhubung dengan User
  • 17. Model Scripts from django.db import models from django.contrib.auth.models import User class Category(models.Model): title = models.CharField(max_length=50) description = models.TextField(null=True, blank=True) class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() category = models.ForeignKey(Category) author = models.ForeignKey(User) class Comment(models.Model): author = models.CharField(max_length=100) content = models.TextField() article = models.ForeignKey(Article, default=1)
  • 18. Migrate & Run  Selesai merancang model, saatnya generate database script sekalian database-nya  Ketikkan perintah berikut di shell:  Jalankan Django untuk melihat hasilnya > python manage.py makemigrations > python manage.py migrate > python manage.py runserver
  • 19. Basic Admin  Django menyediakan automatic admin page  Tidak seperti di Yii, Rails, atau Code Igniter yang hanya menyediakan basic Scaffolding, admin page Django benar- benar powerful  Mudah di-customize dan usable  Untuk dapat mengakses halaman admin, buatlah user superadmin terlebih dahulu  Setelah menjalankan server kembali, halaman admin secara default dapat diakses di:  localhost:8000/admin > python manage.py createsuperuser
  • 20. Admin Page untuk Model  Pada admin.py, ketikkan perintah python berikut: from django.contrib import admin from .models import Category, Article, Comment class CategoryAdmin(admin.ModelAdmin): list_display = ('title', 'description') class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'author') class CommentAdmin(admin.ModelAdmin): list_display = ('author', 'content', 'article') admin.site.register(Category, CategoryAdmin) admin.site.register(Article, ArticleAdmin) admin.site.register(Comment, CommentAdmin)
  • 21. Modifikasi Dikit  Agar semua perintah menjadi Bahasa Indonesia, ubah pilihan Bahasa di settings.py dari “en-us” menjadi “id”  Agar kategori terlihat titlenya di admin Article, override method __unicode__() pada model Category dan model yang lain  Selanjutnya agar nama model familiar dengan Bahasa Indonesia, tambahkan inner class Meta sebagai berikut pada setiap model: class Meta: verbose_name = "Kategori" verbose_name_plural = "List Kategori"
  • 22. Inline Comment  Akan lebih bagus juga list komentar juga tampil di setiap artikelnya. Caranya gunakan inline admin: class CommentInline(admin.StackedInline): model = Comment extra = 1 class ArticleAdmin(admin.ModelAdmin): ... inlines = [CommentInline]
  • 23. Number of Comments  Ingin menampilkan informasi tambahan yang belum termasuk dalam attribute, tambahkan saja method baru pada modelnya.  Misalkan kita ingin menampilkan berapa banyak komentar yang telah diberikan pada artikel tersebut. class Article(models.Model): ... def num_of_comments(self): return self.comment_set.all().count() class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'author', 'num_of_comments') inlines = [CommentInline]
  • 24. Creator is Current User  Seharusnya kita tidak perlu menampilkan field penulis di form artikel, dan penulisnya otomatis adalah user yang sedang login.  Dus kita tidak perlu lagi inputan author  Dan kita perlu merubah sedikit aturan save di admin-nya: class ArticleAdmin(admin.ModelAdmin): ... fields = ['title', 'content', 'category'] def save_model(self, request, obj, form, change): obj.author = request.user obj.save()
  • 25. Kustomisasi Lain  Menampilkan hanya artikel yang saya tulis  Menambahkan search  Menambahkan filter kategori  Membuat fungsi publish masal  Membuat field & inline readonly  Membuat recycle bin (plugin tambahan)  Dan banyak lagi  Dan banyak lagi
  • 26. Use Different Admin UI  Tidak puas dengan desain tampilan admin, kita bisa merubah sendiri dengan melakukan overriding template asli.  Tapi kalau mau yang sudah ada, bisa nambah plugin juga sih  Django-Suit:  Django-wpadmin:  Tambahkan django.core.context_processors.request pada ‘template’  ‘context_processors’ > pip install django-suit > pip install django-wpadmin
  • 27. What to learn After  Templating  View (Function-based & Class-Based)  Form Validation  Model & Queries  Security  Internationalization  Performance  Plugins, plugins, plugins