28
Python WEB DEVELOPMENT FRAMEWORK

Django Mini Tutorial

Embed Size (px)

Citation preview

Page 1: Django Mini Tutorial

PythonWEB DEVELOPMENT FRAMEWORK

Page 2: Django Mini Tutorial

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

Page 3: Django Mini Tutorial

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

Page 4: Django Mini Tutorial

Python for Scientific

Page 5: Django Mini Tutorial

Machine Learning

Page 6: Django Mini Tutorial

Web Scrapping

Page 7: Django Mini Tutorial

Python NLTK

Page 8: Django Mini Tutorial

Web Development

Page 9: Django Mini Tutorial

DjangoDEEP INTRODUCTION TO THE FRAMEWORK

Page 10: Django Mini Tutorial

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

Page 11: Django Mini Tutorial

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 ……..

Page 12: Django Mini Tutorial

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

Page 13: Django Mini Tutorial

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())

Page 14: Django Mini Tutorial

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

Page 15: Django Mini Tutorial

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

Page 16: Django Mini Tutorial

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

Page 17: Django Mini Tutorial

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)

Page 18: Django Mini Tutorial

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

Page 19: Django Mini Tutorial

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

Page 20: Django Mini Tutorial

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)

Page 21: Django Mini Tutorial

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"

Page 22: Django Mini Tutorial

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]

Page 23: Django Mini Tutorial

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]

Page 24: Django Mini Tutorial

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()

Page 25: Django Mini Tutorial

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

Page 26: Django Mini Tutorial

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

Page 27: Django Mini Tutorial

What to learn After

Templating View (Function-based & Class-Based) Form Validation Model & Queries Security Internationalization Performance Plugins, plugins, plugins

Page 28: Django Mini Tutorial

Last Words

Best Framework is What You Use Most