Ahmad Rosid

https://ahmadrosid.com The more I learn, the more I realize how much I don’t know.

May 28, 2018

Flask MVC

Model View Controller Pada Flask.

MVC Design Pattern

Pada tutorial sebelumnya kita sudah bahas tentang routing pada aplikasi flask, kali ini kita akan beranjak sedikit tentang software design pattern.

Dalam membuat sebuah sebuah aplikasi tentu kita perlu memikirkan architecture pattern yang akan kita gunakan, tujuanya adalah ketika aplikasi kasi ita semakin kompleks maka kita tidak mengalami kesulitan untuk mengatur kodenya. Nah pada kesempatan kali ini kita akan sedikit bahas tentang architecture MVC.


Nah apa sih sebenarnya design patter dan MVC itu? Bagi kamu yang masih pemula mungkin akan sedikit mengalami kebingunan dengan istilah design pattern, simple gini design pattern ini adalah sebuah kosep atau tehnik yang kita terapkan dalam membuat sebuah aplikasi. MVC sendiri adalah singkatan dari ( Model View Controller ) yaitu sebuah cara atau pola yang digunakan dalam mebuat aplikasi.


Berbicara masalah MVC design pattern maka kita perlu mengetahui tiga hal atau tiga kata kunci ini :

  • Model Adalah cara kita mengolah data.
  • View Adalah cara membuat user interface atau tampilan dari sebuah aplikasi.
  • Controller Adalah tempat melakukan proses yang cukup rumit dari aplikasi kita.

Yang perlu di kathui inti dari MVC adalah ketika kita mengurusi data seperti menambah, merubah, atau menghapus maka proses itu dilakukan pada mode. Sedangkan jika kita akan mengurusi proses yang cukup kompleks misalanya melakukan proses matematika atau apapun yang melakukan proses kompleks maka dilakukan pada controller. Terakhir ketika kita mengurusi tampilan ini dilakukan pada views.

MVC on Flask

Ok sekarang bagaimana kita melakukan MVC pada aplikasi flask? Well, pada aplikasi flask agak sedikit perbedaan penamaan. Yang paling mencolok nanti adalah ketika kita ingin mengurusi view maka disini kita menggunakan templates mungkin jika kamu sudah pernah menggunakan ruby on rails, atau laravel akan sedikit mengalami kebingunan tapia jangan di hiraukan ini cuman permasalahan penamaan saja.


Nah berikut ini adalah contoh aplikasi yang tidak mengimplementasikan MVC.

          
from flask import Flask
app = Flask(__name__)

def index():
  return "Hello world."
app.add_url_rule('/', 'index', index)

app.run()
          
        

Sekilan kayaknya nggak masalah ya dengan itu, simple dan juga jelas. Akan tetapi permasalahaya adalah bagaimana kalau kita memilii 100 type route dan 100 prosess yang berbeda yang cukup kompleks. Masih bisa di buat, tapi itu akan membuat kode yang kita tulis didalam satu file akan menjadi cukup banyak dan akan membuat kita mengalami kesulitan untuk melakukan debugging jika terjadi error.


Nah sekarang kita mulai dengan struktur project terlebih dahulu :

          
|---project-flask
    |---app
        |---__init__.py
        |---models.py
        |---cores
            |---__init__.py
            |---admin
                |---__init__.py
                |---controller.py
                |---route.py
            |---auth
                |---__init__.py
                |---controller.py
                |---route.py
        |---static
            |---app.css
            |---app.js
        |---templates
            |---auth
            |---admin
            |---index.html
    |---migrations
    |---tests
    |---config.py
    |---run.py
          
        

Diatas adalah contoh struktur project aplikasi yang akan kita buat dengan flask, kita bahas satu per satu struktur nya.

# Folder Keterangan
1 app Pada folder app ini akan digunakan untuk menaruh segala file yang akan kita buat
2 migrations Pada folder migration ini sebenarnya akan di generate otomatis yang mana nanti disini isinya adalah file - file untuk migration database
3 tests Pada folder test berisi file - file yang kita gunakan untuk unit testing
4 app/cores Pada folder app/cores ini akan berisi modul - model dari aplikasi yang akan kita tulis.
5 app/cores/admin Pada folder app/cores/admin contoh dari module admin.
6 app/cores Pada folder app/cores/auth ini adalah contoh module Authentication.
7 app/static Pada folder app/static ini digunakan untuk file static atau yang tidak berubah secara dinamis, seperti gambar, file css, file js dan yang lainya.
8 app/template Pada folder app/templates ini digunakan untuk menaruh file html untuk aplikasi.

Next

© 2017 Codecast.id