SlideShare a Scribd company logo
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

More Related Content

What's hot

15. konsep java class library (jcl)
15. konsep java class library (jcl)15. konsep java class library (jcl)
15. konsep java class library (jcl)
Saprudin Eskom
 
116232424 soal-uts
116232424 soal-uts116232424 soal-uts
116232424 soal-utsBeni Irvan
 
BAB 4 PBO C++ PENGENALAN ACCESS SPECIEFER
BAB 4 PBO C++ PENGENALAN ACCESS SPECIEFERBAB 4 PBO C++ PENGENALAN ACCESS SPECIEFER
BAB 4 PBO C++ PENGENALAN ACCESS SPECIEFERRicko SkyWriter
 
Pembentukan paragraf
Pembentukan paragrafPembentukan paragraf
Pembentukan paragraf
State Polytecnic Of Ujung Pandang
 
E:\ekonomi\ekonomi\modul kelangkaan & biaya peluang
E:\ekonomi\ekonomi\modul kelangkaan & biaya peluangE:\ekonomi\ekonomi\modul kelangkaan & biaya peluang
E:\ekonomi\ekonomi\modul kelangkaan & biaya peluang
sman 2 mataram
 
Makalah bahasa indonesia Ejaan Bahasa Indonesia
Makalah bahasa indonesia Ejaan Bahasa IndonesiaMakalah bahasa indonesia Ejaan Bahasa Indonesia
Makalah bahasa indonesia Ejaan Bahasa Indonesia
Bram Agus Leonardo
 
Contoh pidato bertema pendidikan
Contoh pidato bertema pendidikanContoh pidato bertema pendidikan
Contoh pidato bertema pendidikanAsep Misdan
 
Makalah jenis paragraf dan contohnya
Makalah jenis paragraf dan contohnyaMakalah jenis paragraf dan contohnya
Makalah jenis paragraf dan contohnya
http://julikoding.blogspot.com
 
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Aldion Amirrul
 
Makalah wordpress
Makalah wordpressMakalah wordpress
Makalah wordpress
Marwan Marwan
 
Pengembangan paragraf
Pengembangan paragrafPengembangan paragraf
Pengembangan paragraf
adityaaad
 
Laporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis WebLaporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis Websmatrigger
 
Pendidikan Kewarganegaraan "Asas kewarganegaraan"
Pendidikan Kewarganegaraan "Asas kewarganegaraan"Pendidikan Kewarganegaraan "Asas kewarganegaraan"
Pendidikan Kewarganegaraan "Asas kewarganegaraan"
Dedi Saputra
 
Persepsi dan Mekanisme penglihatan
Persepsi dan Mekanisme penglihatanPersepsi dan Mekanisme penglihatan
Persepsi dan Mekanisme penglihatan
Navia Fathona
 
Pengertian, macam macam konjungsi dan contohnya
Pengertian, macam macam konjungsi dan contohnyaPengertian, macam macam konjungsi dan contohnya
Pengertian, macam macam konjungsi dan contohnya
ahmad maulana
 
Diksi dan gaya bahasa
Diksi dan gaya bahasaDiksi dan gaya bahasa
Diksi dan gaya bahasaOki16
 
Membuat Laporan Data Barang dengan Crystal Report
Membuat Laporan Data Barang dengan Crystal ReportMembuat Laporan Data Barang dengan Crystal Report
Membuat Laporan Data Barang dengan Crystal Report
Farichah Riha
 
BAHASA INDONESIA - Paragraf atau Alinea
BAHASA INDONESIA - Paragraf atau AlineaBAHASA INDONESIA - Paragraf atau Alinea
BAHASA INDONESIA - Paragraf atau Alinea
Diana Amelia Bagti
 
Profesi kependidikan
Profesi kependidikanProfesi kependidikan
Profesi kependidikanLeo Da Mees
 
Imbuhan bebarengan Bahasa Daerah (Jawa)
Imbuhan bebarengan Bahasa Daerah (Jawa)Imbuhan bebarengan Bahasa Daerah (Jawa)
Imbuhan bebarengan Bahasa Daerah (Jawa)
Hariyatunnisa Ahmad
 

What's hot (20)

15. konsep java class library (jcl)
15. konsep java class library (jcl)15. konsep java class library (jcl)
15. konsep java class library (jcl)
 
116232424 soal-uts
116232424 soal-uts116232424 soal-uts
116232424 soal-uts
 
BAB 4 PBO C++ PENGENALAN ACCESS SPECIEFER
BAB 4 PBO C++ PENGENALAN ACCESS SPECIEFERBAB 4 PBO C++ PENGENALAN ACCESS SPECIEFER
BAB 4 PBO C++ PENGENALAN ACCESS SPECIEFER
 
Pembentukan paragraf
Pembentukan paragrafPembentukan paragraf
Pembentukan paragraf
 
E:\ekonomi\ekonomi\modul kelangkaan & biaya peluang
E:\ekonomi\ekonomi\modul kelangkaan & biaya peluangE:\ekonomi\ekonomi\modul kelangkaan & biaya peluang
E:\ekonomi\ekonomi\modul kelangkaan & biaya peluang
 
Makalah bahasa indonesia Ejaan Bahasa Indonesia
Makalah bahasa indonesia Ejaan Bahasa IndonesiaMakalah bahasa indonesia Ejaan Bahasa Indonesia
Makalah bahasa indonesia Ejaan Bahasa Indonesia
 
Contoh pidato bertema pendidikan
Contoh pidato bertema pendidikanContoh pidato bertema pendidikan
Contoh pidato bertema pendidikan
 
Makalah jenis paragraf dan contohnya
Makalah jenis paragraf dan contohnyaMakalah jenis paragraf dan contohnya
Makalah jenis paragraf dan contohnya
 
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
 
Makalah wordpress
Makalah wordpressMakalah wordpress
Makalah wordpress
 
Pengembangan paragraf
Pengembangan paragrafPengembangan paragraf
Pengembangan paragraf
 
Laporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis WebLaporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis Web
 
Pendidikan Kewarganegaraan "Asas kewarganegaraan"
Pendidikan Kewarganegaraan "Asas kewarganegaraan"Pendidikan Kewarganegaraan "Asas kewarganegaraan"
Pendidikan Kewarganegaraan "Asas kewarganegaraan"
 
Persepsi dan Mekanisme penglihatan
Persepsi dan Mekanisme penglihatanPersepsi dan Mekanisme penglihatan
Persepsi dan Mekanisme penglihatan
 
Pengertian, macam macam konjungsi dan contohnya
Pengertian, macam macam konjungsi dan contohnyaPengertian, macam macam konjungsi dan contohnya
Pengertian, macam macam konjungsi dan contohnya
 
Diksi dan gaya bahasa
Diksi dan gaya bahasaDiksi dan gaya bahasa
Diksi dan gaya bahasa
 
Membuat Laporan Data Barang dengan Crystal Report
Membuat Laporan Data Barang dengan Crystal ReportMembuat Laporan Data Barang dengan Crystal Report
Membuat Laporan Data Barang dengan Crystal Report
 
BAHASA INDONESIA - Paragraf atau Alinea
BAHASA INDONESIA - Paragraf atau AlineaBAHASA INDONESIA - Paragraf atau Alinea
BAHASA INDONESIA - Paragraf atau Alinea
 
Profesi kependidikan
Profesi kependidikanProfesi kependidikan
Profesi kependidikan
 
Imbuhan bebarengan Bahasa Daerah (Jawa)
Imbuhan bebarengan Bahasa Daerah (Jawa)Imbuhan bebarengan Bahasa Daerah (Jawa)
Imbuhan bebarengan Bahasa Daerah (Jawa)
 

Viewers also liked

Python geek Event Description
Python geek Event DescriptionPython geek Event Description
Python geek Event Description
Parbhat 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_cd
St Louis MUG
 
Anyevent
AnyeventAnyevent
Anyevent
Marian Marinov
 
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 Vision
Brian Thorne
 
Python PPT
Python PPTPython PPT
Python PPT
Edureka!
 
An Introduction to Python Concurrency
An Introduction to Python ConcurrencyAn Introduction to Python Concurrency
An Introduction to Python Concurrency
David Beazley (Dabeaz LLC)
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
SlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
Kapost
 
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
Empowered Presentations
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
Jesse Desjardins - @jessedee
 
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
Oneupweb
 
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
Content 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 & Tricks
SlideShare
 

Viewers also liked (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
 

Similar to Django Mini Tutorial

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
Abdul 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.pptx
rulimustiyawan37
 
Tugas 4 debbie mistikaweni 1412510982
Tugas 4 debbie mistikaweni   1412510982Tugas 4 debbie mistikaweni   1412510982
Tugas 4 debbie mistikaweni 1412510982
debbie95
 
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 objek
imam 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.pptx
Bom Bom
 
Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316Tugas 4 (individu) rekayasa web 0316
Tugas 4 (individu) rekayasa web 0316
septianarul
 
Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1
Ridwan Fadjar
 
Resume aplinet
Resume aplinetResume aplinet
Resume aplinet
Mais Weli Ropiah
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
Wira 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 GSON
Dimas 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
 

Similar to Django Mini Tutorial (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)
 

Django Mini Tutorial

  • 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