Flask dan Django ialah rangka kerja pembangunan web berasaskan Python. Tutorial ini membandingkan Django vs Flask secara terperinci. Flask vs Node juga diliputi secara ringkas:
Ia sentiasa menjadi dilema yang berleluasa apabila ia datang kepada persoalan memilih Rangka Kerja untuk projek anda yang seterusnya. Setiap beberapa bulan, anda melihat teknologi baharu dan rangka kerja yang mengatasi kelemahan sebelumnya yang anda gunakan.
Rangka kerja lebih seperti budaya senyap dan satu set konvensyen yang mesti anda ikuti untuk menjadi lebih relevan dan produktif dalam dunia teknologi yang sentiasa berubah ini. Secara perbandingan, pembangunan Web bergerak lebih pantas daripada pembangunan Desktop.
Django Vs Flask
Dalam tutorial ini, kami membuat perbandingan antara Django dan Flask secara terperinci. Flask dan Django ialah rangka kerja pembangunan web berasaskan Python. Ramai yang bergerak ke arah rangka kerja mikro yang ringan. Rangka kerja ini tangkas, fleksibel, kecil dan membantu untuk membangunkan perkhidmatan mikro dan aplikasi tanpa pelayan.
Memandangkan populariti NodeJS, Kami juga telah menyediakan perbandingan hebat antara Flask dan Node di bawah bahagian Flask vs. Node. Menilai Django dan Flask pada ciri berikut akan membantu anda dalam memilih satu daripada yang lain.
Pentadbir Lalai
Kedua-dua rangka kerja menyediakan aplikasi pentadbir bootstrapped. Dalam Django, ia terbina dalam dan disertakan dengan lalaimembolehkan Pembangun mempunyai konsistensi dan keseragaman merentas pembangunan bahagian hadapan dan belakang untuk aplikasi web. Pembangun boleh membangunkan untuk bahagian belakang menggunakan JavaScript.
Dalam bahagian Flask vs Node ini, kami membandingkan Flask, yang merupakan rangka kerja berasaskan bahasa pengaturcaraan Python, dengan Node, yang berdasarkan masa jalan JavaScript Chrome pada pelbagai kriteria seperti sebagai seni bina, kelajuan, sokongan komuniti, dsb.
# | Kriteria | Kelalang | Nod |
---|---|---|---|
1 | Masa Jalan Bahasa | Python | Enjin JavaScript V8 Chrome |
2 | Seni bina | I/O yang tidak menyekat memerlukan penggunaan pelayan web yang tidak menyekat seperti gunicorn. Kategori rangka mikro(bahagian belakang). | Secara semula jadi Menyediakan I/O tanpa sekatan. Kategori Fullstack |
3 | Pengurus Pakej | pip | npm |
4 | Kelajuan | Lebih perlahan kerana penterjemah Python yang berasingan. | Lebih pantas kerana pengkompil Just-In-Time . |
5 | Sumber terbuka | Ya | Ya |
6 | Sokongan Komuniti | Pada Github 2.3 K Jam Tangan 51.4 K Bintang 13.7 K Forks | Pada Github 2.9 K Jam Tangan 71.9 K Bintang 17.6 K Garpu |
7 | Penyahpepijatan | Lebih mudah untuk Nyahpepijat dengan debugger Python tanpa kebergantungan. | Memerlukan lebih banyak usaha. Lebih mudah dengan aIDE Pembangunan dengan Pustaka Bluebird / Promise. |
8 | Penyelenggaraan | Penyelenggaraan rendah | Penyelenggaraan Lebih Tinggi |
9 | Aplikasi masa nyata | Sememangnya tidak sesuai. Walau bagaimanapun, ia boleh berfungsi bersama-sama dengan socket.io untuk kes penggunaan masa nyata. Gunakan sambungan Flask-socketio. | Sesuai kerana seni bina dipacu peristiwa dan modul penstriman. Secara semula jadi tidak segerak. |
10 | Perpustakaan | Lebih matang dan stabil. | Kurang matang dan stabil tetapi dalam pembangunan dan pembetulan yang aktif keluaran. |
11 | Kualiti Kod | Ia dicipta secara eksklusif untuk bahagian belakang. | Ia kadangkala terjejas kerana pembangun bahagian hadapan baharu bertukar kepada bahagian belakang. |
12 | Komposisi Pasukan Pembangun | Pasukan biasanya terdiri daripada pembangun bahagian belakang dan pembangun bahagian hadapan. Kebimbangan adalah berasingan. | Pembangun boleh bertukar-tukar peranan dan bekerja untuk bahagian hadapan dan belakang. |
13 | Penyepaduan dengan sistem dan aplikasi sedia ada | Lebih mudah untuk disepadukan dengan aplikasi bahagian belakang warisan sedia ada yang lain menggunakan ekosistem Python untuk Pembelajaran Mesin dan Aplikasi Data Besar. | Agak baharu dan memerlukan penciptaan perpustakaan tersuai atau baharu untuk penyepaduan dengan aplikasi sedia ada yang lain. |
Soalan Lazim
S #1) Apakah yang perlu sayabelajar dahulu, Django atau Flask?
Jawapan: Lebih baik gunakan Flask dahulu. Sebaik sahaja anda mendapat sedikit pengalaman dalam pembangunan web, anda boleh menggunakan Django. Django menganggap bahawa anda sudah mengetahui cara aplikasi web berfungsi dan ia menguruskan kebanyakan fungsi dengan sendirinya.
S #2) Adakah Flask atau Django lebih baik?
Jawapan: Kedua-dua Flask dan Django sangat baik dan sesuai untuk tujuan mereka. Django digunakan untuk mencipta aplikasi berskala perusahaan yang lebih menonjol. Flask digunakan untuk mencipta aplikasi statik dan lebih kecil. Flask juga sesuai untuk prototaip. Walau bagaimanapun, dengan penggunaan sambungan Flask, kami juga boleh mencipta aplikasi yang besar.
S #3) Apakah syarikat yang menggunakan Flask?
Jawapan: Beberapa syarikat yang menggunakan Flask ialah Reddit, Mailgun, Netflix, Airbnb, dll.
S #4) Apakah tapak yang menggunakan Django?
Jawapan : Beberapa tapak yang menggunakan Django ialah Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite, dsb.
Kesimpulan
Kita tidak sepatutnya terpaku dengan satu rangka kerja untuk masa yang lama. . Kita harus bersedia untuk mempelajari set teknologi baharu dan menerima pakai susunan yang menjadi sohor kini di luar sana. Sebilangan daripada kami mahukan pendekatan yang agak luar biasa, termasuk bateri dengan kitaran keluaran tegar, mengekalkan keserasian ke belakang yang lebih ketat, dsb.
Jika anda rasa anda lebih tergolong dalam kumpulan ini, maka anda mesti memilih Django. Walau bagaimanapun, ia adalah luar biasauntuk berjalan bersama-sama dengan ciri baharu dan fleksibiliti rangka kerja Flask juga. Apabila anda ingin mengekalkan konsistensi antara bahagian hadapan dan bahagian belakang, anda boleh memilih rangka kerja tindanan penuh seperti NodeJS.
Melalui rangka kerja lebih merupakan pilihan yang bergantung pada konteks dan masalah yang kami cuba lakukan selesaikan. Memilih rangka kerja sentiasa sukar. Kami berharap kami telah membentangkan perkara semakan penting dalam tutorial ini, dan ia akan membantu anda dalam memuktamadkan satu rangka kerja. Walau bagaimanapun, kami mengesyorkan mempelajari kedua-dua rangka kerja.
Lebih mudah untuk bermula dengan Flask dan kemudian beralih ke Django selepas mendapat sedikit pengalaman dalam Pembangunan Web. Jika atas sebab tertentu usaha pembangunan anda memerlukan penggunaan JavaScript maka anda boleh meneruskan NodeJS.
pemasangan. Walau bagaimanapun, dalam kes Flask, anda perlu memasang Flask-Appbuilder untuk mempunyai antara muka pentadbir.Sementara itu, ingat untuk mencipta superuser dalam Django dan pentadbir dalam kes Flask supaya anda boleh log masuk ke belakang pentadbir menggunakan penyemak imbas.
Pangkalan Data Dan ORMS
Django dihantar dengan ORM terbina lalai yang menyokong langsung interaksi dengan RDBMS seperti Oracle, MySQL, PostgreSQL, SQLite, dll. ORM ini juga menyokong penjanaan dan pengurusan migrasi. Secara relatifnya lebih selesa untuk mencipta model pangkalan data dengan pengesahan terbina.
Kelalang juga tidak mengenakan sebarang kaedah tertentu dan tersedia untuk digunakan dengan pelbagai sambungan yang menyokong ciri serupa seperti yang digariskan dalam kes Django. Kami telah memberikan contoh Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine, dalam salah satu tutorial siri ini.
Pandangan Dan Laluan
Kedua-dua rangka kerja mempunyai mekanisme untuk mengisytiharkan berasaskan kaedah dan pandangan berasaskan kelas. Dalam kes Django, laluan dan pandangan disebut dalam fail berasingan. Selain itu, kita sentiasa perlu menghantar objek permintaan secara eksplisit.
Sebaliknya, dalam Flask, kita boleh menggunakan penghias untuk menyebut laluan untuk pengendali yang sepadan. Objek permintaan dalam Flask adalah global dan hanya tersedia tanpa sebarang penyampaian eksplisit. Kami telah memperincikan konsep menggunakan pandangan dan laluan dalam salah satu daripada kamitutorial.
Borang Dan Templat
Borang Django terbina dalam rangka kerja dan tidak memerlukan pemasangan. Borang adalah sangat penting untuk aplikasi, dan dalam Django, Borang boleh dihantar ke teg templat, dan tersedia untuk diberikan dalam templat. Walau bagaimanapun, dalam kes Flask, kami perlu menggunakan Flask-WTF.
Kami juga menggunakan Flask-Appbuilder untuk membuat borang. Selain itu, WTF-Alembic boleh digunakan untuk menjana borang HTML berdasarkan model pangkalan data.
Kedua-dua rangka kerja menyokong templat Jinja2 dan kedua-duanya menyokong penyajian fail statik dengan fungsi terbina untuk menjana URL sumber dan adalah corak yang agak biasa dalam semua rangka kerja hari ini.
Walaupun terdapat cara yang berbeza untuk melepasi pembolehubah dan untuk memaparkan templat dalam kaedah paparan tertentu mereka, kedua-dua rangka kerja mempunyai sintaks yang sama untuk mengakses pembolehubah dalam templat.
Fleksibiliti
Django, kerana saiz dan kerumitannya, adalah kurang fleksibel daripada Flask. Kelalang boleh dipanjangkan dengan mudah dengan bantuan sejumlah besar sambungan yang disokongnya. Oleh itu, ia memerlukan lebih banyak masa dan usaha untuk menyediakan Flask kerana kami perlu menilai lebih banyak sambungan.
Kebebasan yang diberikan kepada pembangun dengan cara menghasilkan pembangunan dan penghantaran yang lebih perlahan. Sebaliknya, Django mengikuti satu set konvensyen yang telah ditetapkan dan mengikut arketaip yang memerlukan kurang sisihandaripada matlamat dan objektif projek.
Lengkung Pembelajaran
Ia hampir memerlukan jumlah masa yang sama untuk mempelajari kedua-dua Django dan Flask. Flask mempunyai API yang lebih kecil; oleh itu, orang ramai mungkin dapat menyelesaikannya dengan lebih cepat setakat rangka kerja teras berkenaan. Ia menjadi sama mencabar apabila menggunakan sambungannya. Ia mungkin menjadi rumit tidak lama lagi.
Walau bagaimanapun, hanya kerana semuanya tidak dibungkus dalam satu pakej, adalah lebih mudah untuk mengamalkan pengasingan kebimbangan dalam kes rangka kerja Flask.
Kami mengesyorkan agar anda pelajari corak dan bukan sintaks yang diikuti. Kedua-dua Django dan Flask mempunyai dokumentasi yang sangat baik. Anda boleh mengikutinya dengan mudah semasa membangunkan ciri.
Saiz Dan Tempoh Projek
Apabila anda bekerja pada projek yang lebih besar dengan pasukan yang lebih besar, adalah lebih baik untuk mengambil manfaat daripada kematangan Django dan sokongan penyumbang meluas yang dimilikinya. Jika projek anda lebih kecil dan memerlukan bilangan pembangun yang lebih sedikit, lebih baik menggunakan Flask.
Selain itu, jika projek anda akan bertahan lama, maka Django ialah pilihan yang tepat; jika tidak, anda boleh memilih Flask.
Jenis Aplikasi
Django sebelum ini dianggap sebagai pilihan yang tepat apabila terdapat keperluan untuk aplikasi web skala perusahaan sepenuhnya. Tetapi, hari ini Flask adalah sama matang dan boleh berfungsi dengan baik untuk keadaan yang sama.
Walau bagaimanapun, pembangun cenderung untukpilih Flask lebih banyak untuk membangunkan tapak web kecil atau statik, atau semasa melaksanakan perkhidmatan web API RESTful yang pantas.
Pengambilan Pembangun
Mempunyai sumber mahir dalam konvensyen rangka kerja yang anda gunakan membuahkan hasil. Anda boleh mengharapkan pembangunan yang lebih pantas, ujian yang lebih pantas, penghantaran yang lebih pantas dan pembetulan isu yang lebih pantas.
Agak mudah untuk mencari pembangun baharu dalam kes Flask. Walau bagaimanapun, adalah mencabar untuk mencari sumber mahir dalam Django. Tidak ramai yang bersedia untuk diupah oleh pembangun Django. Selain itu, rangka kerja Django agak lama, dan oleh itu, kebanyakan pekerja baharu adalah mahal untuk diambil jika dibandingkan dengan mereka yang mahir dalam rangka kerja Flask.
Graduan teknikal baharu juga menggunakan rangka kerja ringan seperti sebagai Flask kerana trend industri adalah ke arah mencipta aplikasi dengan perkhidmatan mikro yang dipisahkan atau teknologi yang menyokong penciptaan pelaksanaan tanpa pelayan. Javascript digunakan secara meluas bersama-sama dengan rangka kerja yang lebih mudah digunakan dan lebih popular.
Sumber Terbuka
Kedua-dua Flask dan Django ialah projek sumber terbuka. Anda boleh menemui Django di //github.com/django/django dan Flask di //github.com/pallets/flask. Melihat kepada projek-projek ini, bilangan penyumbang kepada Django agak lebih banyak daripada yang menyumbang kepada Flask.
Oleh itu, kita boleh mengharapkan sokongan yang lebih dan lebih cepat jika kita mempunyai beberapaisu dan pertanyaan yang memerlukan penyelesaian. Bertentangan dengan andaian biasa, Bilangan pengguna projek Flask adalah lebih tinggi daripada Django.
Satu fakta mengenai Flask ialah mungkin tiada sambungan yang stabil untuk tugas tertentu. Oleh itu, kerja menapis yang terbaik kekal dengan pengguna sambungan.
Sebagai contoh, kami menggunakan Flask-Twitter-oembedder untuk bekerja dengan API Twitter dalam tutorial terakhir, tetapi sambungan ini mempunyai beberapa isu yang menyebabkan kami terpaksa menukar daripada Flask-Cache kepada Flask-Caching.
Kami juga terpaksa memasukkan pernyataan pemasangan tersuai untuk memasang Flask-twitter-oembedder daripada repo Github kami yang dikemas kini. daripada menyebutnya dalam fail requrements.txt projek kami.
Penyelenggaraan yang kerap ialah cabaran biasa yang akan anda hadapi dengan projek sumber terbuka. Sokongan dan pengurusan projek sumber terbuka biasanya terikat dengan perkhidmatan berbayar. Anda mungkin perlu menunggu lama untuk menyelesaikan beberapa isu daripada penyumbang projek.
Prestasi
Rangka kerja kelalang lebih ringan daripada Django dan berprestasi lebih baik dengan perbezaan yang boleh diabaikan, terutamanya sambil mempertimbangkan operasi I/O.
Sila lihat perbandingan yang diberikan di bawah. Dengan peningkatan dalam permintaan, prestasi Flask kekal hampir sama. Walau bagaimanapun, Django mengambil lebih banyak masa untuk membuat templat selepas mengambil data menggunakanORM.
Kelalang Python Vs Django: Perbandingan Jadual
# | Ciri | Django | Kelalang |
---|---|---|---|
1 | Pentadbir Lalai | Halaman Belakang Pentadbiran Terbina | Kelalang Pemasangan -Appbuilder |
2 | Dayakan Pentadbir Lalai | Dalam settings.py, pastikan anda menyahkomen apl yang dipasang oleh pentadbir. ... # Definisi aplikasi INSTALLED_APPS = [ 'tapak web', 'django.contrib.admin', # yang lain kod ] ... | Import AppBuilder dan SQLA daripada flask_appbuilder, mulakan DB dahulu dan kemudian Appbuilder dari Flask import Flask daripada flask_appbuilder import AppBuilder, SQLA app=Flask(__name__) db = SQLA(app)appbuilder=AppBuilder(app, db.session) |
3 | Buat Pengguna Pentadbir | python manage.py createsuperuser | flask fab create-admin |
4 | Pangkalan Data dan ORMS | ORM terbina untuk RDBMS Gunakan Django-nonrel untuk bahagian belakang NoSQL | Pasang Flask-SQLAlchemy A NoSQL Sambungan Flask tertentu seperti Flask-MongoEngine |
5 | Paparan dan Laluan | URLConf dalam urls.py dari django laluan import .urls daripada paparan .import urlpatterns = [ path('/path', views.handler_method), # url lain dan pengendali ] | Gunakan penghias @app.route(“/path”) pada Views untuk memetakan laluan denganfunction. @app.route(“/path”) def handler_method(): # kod lain dengan logik lanjut |
6 | Templat Render | Dalam paparan daripada pemaparan import django.shortcuts def example_view(request): tempvar=” value_for_template” return render( permintaan, 'demo.html', {'tempvar':tempvar} ) | Dalam paparan dari . import apl daripada permintaan import flask daripada render_template import flask @app.route(“/path”) def demo(): tempvar=”value_for_template” return render_template( “demo.html”, temp_var=temp_var ) |
7 | Interpolasi pembolehubah dalam Templat | Dalam templat/demo.html {{ tempvar }} | Dalam templat/demo.html {{ tempvar }} |
8 | Fleksibiliti | Kurang Fleksibel | Lebih Fleksibel |
9 | Keputusan Reka Bentuk | Kurang Keputusan Reka Bentuk dengan Pembangun. | Lebih kebebasan kepada Pembangun. |
10 | Sisihan Projek | Kurang sisihan daripada Matlamat projek. | Lebih banyak sisihan disebabkan kebebasan yang diberikan kepada pembangun. |
11 | Saiz Pangkalan Kod | Pangkalan Kod Lebih Besar | Pangkalan Kod Lebih Kecil |
12 | Bilangan API | Lebih banyak API | Kurang API |
13 | Jenis Aplikasi | Aplikasi Web Penuh | Aplikasi Lebih Kecil /Perkhidmatan Mikro |
14 | Aplikasi RESTful | Rangka kerja Django REST untuk Aplikasi RESTful. | Gunakan sambungan berikut untuk aplikasi RESTful. Flask-RESTX Flask-RESTX Sambungan |
15 | Prestasi | Prestasi perlahan apabila bilangan permintaan adalah besar. | Prestasi Konsisten sepanjang. |
16 | Sumbangan Sumber Terbuka | Lebih banyak bilangan daripada Forks, Jam Tangan dan Komit. | Bilangan Forks, Jam Tangan dan Komit yang lebih sedikit. |
17 | Pembangun | Memerlukan pembangun yang berpengalaman dan tidak mudah tersedia untuk pengambilan. | Kebanyakan pembangun kurang berpengalaman dan didapati dalam jumlah yang mencukupi. |
Flask Vs Nod
Berkenaan dengan timbunan pembangunan web, ternyata pembangunan untuk web memerlukan gabungan pelbagai teknologi. Kita perlu memecahkan aplikasi web kepada bahagian hadapan dan hujung belakang. Bahagian bahagian hadapan aplikasi paling baik dibangunkan dalam teknologi yang dijalankan dalam penyemak imbas, seperti JavaScript, HTML dan CSS.
Secara amnya, Bahagian belakang dibangunkan dalam bahasa yang sesuai untuk pelayan- sisi dan boleh berinteraksi dengan sistem pengendalian asas, pangkalan data yang disambungkan atau rangkaian apabila diperlukan.
Walau bagaimanapun, rangka kerja berasaskan JavaScript yang dipanggil NodeJS telah menukar pandangan yang diberikan di atas dan