Halo semuanya!
Hari ini saya sarankan menyelam ke salah satu kerangka kerja web yang paling nyaman dalam hubungannya dengan Python yang disebut 
Dash . Itu muncul belum lama ini, beberapa tahun yang lalu berkat pengembang kerangka kerja plotly. Dash sendiri adalah sekelompok Flask, React.Js, HTML dan CSS.
Kinerja Chris Parmer di PLOTCON 2016
Mari kita instal kerangka kerja segera. Tentukan versi yang diperbarui di 
sini .
pip install dash==0.31.1  
Teman-teman, jika Anda benar-benar ingin memahami kerangka kerja ini, bacalah publikasi sampai akhir, seperti contoh pertama yang diikuti, dan setelah ulasan rinci kode. Jika Anda masih tidak mengerti, saya sarankan Anda untuk membaca dokumentasi Dash dalam bahasa Inggris di aslinya. Juga di RuNet ada beberapa artikel yang menjelaskan konsep yang saya putuskan untuk lewati dalam tutorial ini.
Mari kita mulai.
Aplikasi Dash terdiri dari dua bagian. Bagian pertama, "tata letak," menjelaskan bagaimana aplikasi kita terlihat. Bagian kedua menjelaskan interaktivitas aplikasi, kita akan membicarakannya di artikel berikutnya.
Dash menyediakan kelas Python untuk semua komponen visual aplikasi. Pengembang menyediakan seperangkat komponen dalam apa yang disebut 
dash_core_components dan 
dash_html_components . Tetapi Anda juga dapat 
membangun komponen Anda menggunakan JavaScript dan React.js.
Itu pentingdash_core_components berisi berbagai bentuk dinamis, seperti, misalnya, daftar drop-down, bagan, dan kotak centang.
dash_html_components berisi konstruksi html untuk membungkus formulir kami. Misalnya blok Div atau tag header H1, H2, dan sebagainya. Pengembang memberi kami semacam abstraksi dari html menggunakan kamus Python.
Untuk mulai memahami, buat file 
app.py , yang akan berisi yang berikut:
 
Dan jalankan dari direktori saat ini dengan perintah:
$ python app.py...Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)Kami melihat bahwa server telah dimulai dan siap menerima permintaan untuk port 8050 (Anda mungkin memiliki port lain).
Pergi ke alamat 
http://127.0.0.1:8050/dan lihat:

Catatan
- Komponen layoutterdiri dari pohon "komponen" yang terkandung dalamdash_html_components. Misalnya blok div.
 
- dash_html_componentsmemiliki komponen untuk setiap tag html.- html.H1(children='Hello Dash')menghasilkan elemen HTML-  - <h1>Hello Dash</h1>
 dalam aplikasi Anda.
 
- Tidak semua komponen kerangka kerja adalah komponen HTML. dash_core_componentsmenghasilkan elemen tingkat tinggi dan elemen interaktif menggunakan sekelompok JS, HTML, CSS, dan React.Js.
 
- Setiap komponen dijelaskan sepenuhnya melalui atribut kata kunci. Dash adalah deklaratif: pertama-tama, Anda akan menjelaskan aplikasi Anda melalui atribut ini.
 
- Atribut children-childrensedikit istimewa. Secara konvensional, ini selalu menjadi yang pertama, yang berarti Anda dapat menggantihtml.H1(children='Hello Dash')denganhtml.H1('Hello Dash').
 
Catatan
Dash berisi fitur pengembang web yang familier: 
hot-reloading . Ini diaktifkan saat fungsi 
app.run_server(debug=True) diluncurkan. Fitur ini memperbarui browser Anda setiap kali Anda membuat perubahan pada kode dan menyimpan hasilnya. Jadi, tidak perlu me-restart server setiap kali.
Seperti yang kita ingat, Dash berisi komponen untuk setiap tag HTML. Tapi itu juga bisa menerima semua argumen kata kunci, serta elemen HTML.
Mari kita sedikit mengubah kode kita:
 
Kami menyegarkan halaman, dan melihat:

Dalam contoh ini, kami mengubah gaya 
html.Div dan 
html.H1 menggunakan properti 
style .
html.H1('Hello Dash', style={'textAlign': 'center', 'color': '#7FDBFF'}) dirender dalam aplikasi Dash sebagai:
 <h1 style="text-align: center; color: #7FDBFF">Hello Dash</h1> 
Tetapi ada beberapa poin penting:
- Properti styleHTML adalah string yang dipisahkan titik koma. Di Dash, Anda bisa melewati kamus.
 
- Kunci dalam kamus stylesedikit berbeda dalam penulisan relatif terhadap HTML. Alih-alihtext-alignkami menulistextAlign.
 
- Kelas anak-anak dari setiap elemen tag di Dash (kelas) dilewatkan dalam array melalui argumen children-children.
 
Komponen yang dapat digunakan kembali
Melanjutkan, bayangkan bahwa kita memerlukan beberapa elemen yang akan berubah, misalnya, tergantung pada input pengguna dari aplikasi kita. Untuk ini, apa yang disebut 
reusable components disediakan di Dash. Pertimbangkan mereka menggunakan tabel contoh, data yang akan dimuat dari kerangka data Pandas.
 import dash import dash_core_components as dcc import dash_html_components as html import pandas as pd df = pd.read_csv( 'https://gist.githubusercontent.com/chriddyp/' 'c78bf172206ce24f77d6363a2d754b59/raw/' 'c353e8ef842413cae56ae3920b8fd78468aa4cb2/' 'usa-agricultural-exports-2011.csv') def generate_table(dataframe, max_rows=10): return html.Table(  
Sedikit tentang tabel
Mari kita ingat apa tabel dalam HTML itu.
Tabel HTML ditentukan oleh tag 
tabel .
Setiap baris tabel diidentifikasi oleh tag 
tr . Header tabel ditentukan oleh tag 
th . Sel tabel diisi menggunakan tag 
td .
Ternyata struktur berikut:
 <table style="width:100%"> <tr> <th>Firstname</th> <th>Lastname</th> <th>Age</th> </tr> <tr> <td>Jill</td> <td>Smith</td> <td>50</td> </tr> <tr> <td>Eve</td> <td>Jackson</td> <td>94</td> </tr> <tr> <td>John</td> <td>Doe</td> <td>80</td> </tr> </table> 
Dan terlihat seperti ini:
| Nama depan | Nama belakang | Usia | 
|---|
| Jill | Smith | 50 | 
| Eve | Jackson | 94 | 
| John | Doe | 80 | 
Komponen Kernel (Komponen Inti)
Seperti yang kami katakan sebelumnya, 
dash_core_components mencakup elemen tingkat tinggi. Seperti: menu tarik-turun, grafik, dan lainnya.
Anda dapat membiasakan diri dengan sisi visual dari elemen-elemen ini, yang masing-masing disertai dengan kode (sangat nyaman, rasa hormat universal kepada pengembang dari Plot.ly) di 
sini .
Agar pengembang, yaitu Anda, untuk dapat membedakan semua elemen dalam kode, adalah kebiasaan untuk menulis label untuk setiap komponen kernel. Ini adalah sesuatu seperti nama elemen kita. Ini tidak perlu, tetapi hanya membuat proses debug lebih mudah. Dan pengguna akan diberi kesempatan untuk dengan cepat memahami antarmuka Anda. Selanjutnya Anda akan mengerti apa yang saya maksud.
Mari kita lihat kode berikut:
 import dash import dash_core_components as dcc import dash_html_components as html external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.layout = html.Div([ html.Label('Dropdown'), dcc.Dropdown( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montréal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], value='MTL' ), html.Label('Multi-Select Dropdown'), dcc.Dropdown( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montréal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], value=['MTL', 'SF'], multi=True ), html.Label('Radio Items'), dcc.RadioItems( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montréal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], value='MTL' ), html.Label('Checkboxes'), dcc.Checklist( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montréal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], values=['MTL', 'SF'] ), html.Label('Text Input'), dcc.Input(value='MTL', type='text'), html.Label('Slider'), dcc.Slider( min=0, max=9, marks={i: 'Label {}'.format(i) if i == 1 else str(i) for i in range(1, 6)}, value=5, ), ], style={'columnCount': 2}) if __name__ == '__main__': app.run_server(debug=True) 
Di sini kita melihat bahwa kita membuat seperti biasa satu blok Div umum, yang berisi berbagai komponen inti kami. Itu terlihat seperti ini:

Masih ada pertanyaan?
Para pengembang telah menyiapkan dokumentasi yang sangat rinci, Anda dapat membacanya dengan perintah Python khas untuk setiap kelas:
 >>> help(dcc.Dropdown) 
Ringkasan
layout dipelajari sebelumnya menggambarkan bagaimana aplikasi kita terlihat. Intinya, ini berisi hierarki tag HTML seperti pohon dan elemen tingkat tinggi dari inti Dash, yang terkandung dalam 
dash_core_components .
Di bagian selanjutnya, kita akan belajar bagaimana membuat halaman kita interaktif. Jika Anda menyukai tutorial ini, beri tanda plus dan berlangganan saya.
* Akan segera ada tautan ke bagian selanjutnya *