Upload
fahri-firdausillah
View
110
Download
2
Embed Size (px)
Citation preview
PythonWEB 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
DjangoDEEP 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 Scriptsfrom 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 adminfrom .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
Best Framework is What You Use Most