Struktur Dasar Aplikasi
Flask dikenal sebagai framework dengan tingkat fleksibilitas yang tinggi, sehingga tidak ada aturan tetap untuk pengorganisiran struktur direktori nya. Untuk panduan kali ini, struktur direktori akhir akan terlihat seperti dibawah ini:
βββ migrations/
| βββ ...
βββ templates/
| βββ 404.html
| βββ 500.html
| βββ base.html
| βββ index.html
| βββ navbar.html
| βββ user.html
βββ .gitignore
βββ README.md
βββ app.py
βββ forms.py
βββ requirements.txt
Inisialisasi
Semua aplikasi harus melewati instance aplikasi yang artinya harus di import object dari module yang akan digunakan. Contoh penulisannya untuk Flask biasanya seperti ini:
# app.py
from flask import Flask
app = Flask(__name__)
Pertama kita mengimpor kelas Flask. Sebuah instance dari kelas ini akan menjadi WSGI.
Selanjutnya kita membuat instance dari kelas ini. Argumen pertama adalah nama modul atau paket aplikasi. Jika kamu menggunakan modul tunggal (seperti dalam contoh ini), Kamu harus menggunakan
__name__
karena tergantung pada apakah itu dimulai sebagai awal aplikasi atau diimpor sebagai modul, namanya akan berbeda menjadi__main__
. Ini diperlukan agar Flask tahu di mana harus mencari templat, file statis, dan sebagainya. Untuk informasi lebih lanjut, lihat dokumentasi Flask.
Sekarang buatlah sebuah file dengan nama app.py
di dalam directory flask-web-development. Buka di text editor/IDE favorit kamu dan tuliskan kode diatas.
Fungsi Routes dan Views
Klien seperti web browser mengirim permintaan ke web server. Contoh, aplikasi Flask perlu mengetahui kode apa yang harus dijalankan untuk setiap URL yang diminta, sehingga ia menyimpan URL Fungsi python. Hubungan antara URL dan fungsi yang menanganinya disebut route.
Cara paling mudah untuk menentukan route dalam aplikasi Flask adalah melalui dekorator(@)app.route. Contoh seperti ini:
# app.py
@app.route('/')
def index():
return '<h1>Hello, World!</h1>'
dan tambahkan code tersebut di app.py setelah app = Flask(__name__)
sehingga source code lengkapnya terlihat seperti ini:
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello, World!</h1>'
Development Web Server
Yang kita butuhkan adalah perintah untuk menjalan web server di web browser. Pastikan virtual environment kamu sudah aktif kemudian ketikkan dan jalankan perintah ini di terminal kamu untuk menjalankan web server.
Linux / Mac
(env) $ export FLASK_APP=app.py
(env) $ flask run
* Serving Flask app "app.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Windows
(env) $ set FLASK_APP=app.py
(env) $ flask run
* Serving Flask app "app.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Selamat! Server anda berhasil berjalan. Cobalah untuk akses URL http://127.0.0.1:5000/ sehingga memunculkan tampilan seperti ini di web browser kamu. Jika halaman yang ditampilkan adalah 404 periksalah kembali URL kamu. Untuk mengakhiri sesi pada server saat ini tekan CTRL + C
Router Dinamis
Route dinamis memungkinkan kita untuk mengirim value dari link atau url ke salah satu route URL. Dan value yang dikirim tersebut dapat digunakan juga di dalam fungsi route tersebut.
# app.py
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, {}</h1>'.format(name)
Ketikan kode tersebut, hingga jadi seperti dibawah ini
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello, World!</h1>'
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, {}</h1>'.format(name)
Lalu jalankan kembali server dengan cara
(env) $ flask run
Ketika web server berhasil jalan kembali ketikkan URL ini di web browser kamu https://127.0.0.1:5000/user/David maka web browser kamu akan menampilkan Hello, David