Kerangka Django

Dalam bab ini, kita akan membahas tentang Kerangka Django secara rinci.

Django adalah kerangka kerja web MVT yang digunakan untuk membangun aplikasi web. Kerangka web Django yang besar hadir dengan begitu banyak "termasuk baterai" sehingga para pengembang sering kali kagum tentang bagaimana semuanya berhasil bekerja sama. Prinsip di balik penambahan begitu banyak baterai adalah memiliki fungsi web yang sama dalam kerangka itu sendiri daripada menambahkan yang terakhir sebagai pustaka terpisah.

Salah satu alasan utama di balik popularitas kerangka Django adalah komunitas Django yang besar. Komunitas ini begitu besar sehingga situs web terpisah dikhususkan untuk itu di mana pengembang dari semua sudut mengembangkan paket pihak ketiga termasuk otentikasi, otorisasi, sistem CMS yang didukung Django, add-on e-niaga dan seterusnya. Ada kemungkinan besar bahwa apa yang Anda coba kembangkan sudah dikembangkan oleh seseorang dan Anda hanya perlu menariknya ke dalam proyek Anda.

Mengapa Anda harus menggunakan Django?

Django dirancang sedemikian rupa sehingga mendorong para pengembang untuk mengembangkan situs web dengan cepat, bersih dan dengan rancangan praktis. Pendekatan praktis Django untuk menyelesaikan sesuatu adalah yang menonjol dari kerumunan.

Jika Anda berencana membangun aplikasi yang sangat dapat disesuaikan, seperti situs web media sosial, Django adalah salah satu kerangka kerja terbaik untuk dipertimbangkan. Kekuatan Django terletak pada interaksinya antara pengguna atau kemampuannya untuk berbagi jenis media yang berbeda. Salah satu keuntungan besar dari django adalah kemampuannya untuk memanfaatkan dukungan berbasis komunitas yang besar yang memberi Anda plugin pihak ketiga yang siap untuk digunakan dalam aplikasi Anda.

Di bawah ini adalah sepuluh alasan teratas untuk memilih Django untuk pengembangan web -

Python

Python bisa dibilang salah satu bahasa pemrograman yang paling mudah dipelajari karena konstruksi bahasanya yang sederhana, struktur aliran dan sintaksnya yang mudah. Ini serbaguna dan menjalankan situs web, aplikasi desktop, dan aplikasi seluler yang disematkan di banyak perangkat dan digunakan dalam aplikasi lain sebagai bahasa skrip yang populer.

Baterai Termasuk

Django hadir dengan pustaka umum yang penting untuk membangun fungsionalitas umum seperti perutean URL, otentikasi, pemeta relasional objek (ORM), sistem templating dan migrasi skema db.

Admin bawaan

Django mempunyai antarmuka administrasi built-in yang memungkinkan Anda menangani model Anda, izin pengguna / grup dan untuk mengatur pengguna. Dengan adanya antarmuka model, tidak diperlukan program administrasi basis data terpisah untuk semua kecuali fungsi basis data lanjutan.

Tidak menghalangi Anda

Membuat aplikasi Django tidak menambahkan boilerplate dan fungsi yang tidak perlu. Tidak ada impor wajib, pustaka pihak ketiga, dan tidak ada file konfigurasi XML.

Skalabel

Django didasarkan pada pola desain MVC. Artinya semua entitas seperti db (database), kode back-end dan front-end adalah entitas individu. Django membolehkan kita untuk memisahkan kode dari media statis termasuk gambar, berkas, CSS dan JavaScript yang membentuk situs Anda.

Django mendukung daftar lengkap pustaka pihak ketiga untuk server web, tembolok, manajemen kinerja, pengelompokan dan penyeimbangan. Salah satu keuntungan yang Django berikan adalah dukungan untuk aplikasi dan layanan email dan perpesanan utama seperti ReST dan OAuth.

Pertempuran diuji

Django pertama kali bersumber terbuka pada tahun 2005. Setelah 12 tahun berkembang, Django sekarang tidak hanya menjalankan situs web penerbitan berita tetapi juga menjalankan semua atau sebagian dari perusahaan global besar seperti Pinterest, Instagram, Disqus, Bitbucket, EventBrite dan Zapier. Ini menjadikannya kerangka kerja web yang kuat dan andal untuk digunakan.

Dukungan paket besar

Karena dukungan komunitas yang besar dan jaringan pengembang yang besar, ada kemungkinan besar bahwa apa pun yang ingin Anda lakukan mungkin telah dilakukan sebelumnya. Komunitas pengembang internasional yang besar berkontribusi pada komunitas dengan merilis proyek mereka sebagai paket sumber terbuka.

Salah satu tempat penyimpanan proyek ini adalah situs Paket Django. Saat ini, daftar paket Django lebih dari 3400 ditambah aplikasi Django yang dapat digunakan kembali, situs dan perkakas untuk digunakan dalam proyek Django kami.

Dikembangkan secara aktif

Salah satu risiko terbesar yang terkait dengan proyek open source adalah keberlanjutannya. Kami tidak bisa memastikan apakah itu berlangsung lama.

Tidak ada resiko seperti itu pada Django karena berumur 12 tahun. Rilisnya yang konsisten, versi yang lebih baru / lebih baik, dan komunitas aktif tumbuh setiap hari dengan tim inti besar kontributor sukarela yang memelihara dan meningkatkan basis kode setiap hari.

Rilis yang stabil

Proyek perangkat lunak sumber terbuka seperti Django, dalam banyak kasus, secara aktif dikembangkan dan lebih aman daripada perangkat lunak berpemilik bersaing karena banyak pengembang mengembangkan dan mengujinya setiap hari. Namun, kelemahan dari proyek perangkat lunak sumber terbuka adalah tidak adanya basis kode yang stabil untuk pengembangan yang layak secara komersial.

Di Django, kami memiliki perangkat lunak versi Dukungan Jangka Panjang (LTS) dan proses pelepasan yang ditentukan seperti yang ditunjukkan pada gambar di bawah ini -

Dokumentasi Kelas Satu

Dari terbitan pertama, pengembang Django memastikan bahwa harus ada dokumen komprehensif yang tepat tersedia dan tutorial mudah dimengerti.

Siapa yang Menggunakan Django?

Karena kekuatan unik Django, ada beberapa situs web populer yang dibangun dengan Python di atas kerangka Django. Di bawah ini adalah beberapa situs utama yang seluruhnya atau sebagian dibangun berdasarkan Django.

Disqus

Ini adalah salah satu situs hosting komentar blog yang paling disukai secara global. Mudah diintegrasikan dengan CMS (sistem manajemen konten) paling populer seperti WordPress dan banyak lainnya melalui Disqus. Menangani basis pengguna lebih dari 50 juta, Django mampu memuaskan pemilik situs untuk menjangkau komunitas mereka.

Bawang merah

Situs Onion yang menyediakan tempat online untuk koran satir mereka, Django menyediakan kerangka untuk itu.

Bitbucket

Bitbucket seperti GitHub, layanan hosting repositori kontrol versi. Satu-satunya perbedaan antara Bitbucket dan GitHub adalah bahwa Bitbucket menghosting repositori lincah sedangkan GitHub menghosting repositori git. Karena jutaan pengguna terkait dengan Bitbucket, dan semua layanan yang disediakan bitbucket (seperti membuat repo, mendorong kode Anda, menambahkan kolaborator, melakukan, menarik permintaan, dll.) Harus stabil. Django bertanggung jawab untuk menjalankan situs bitbucket.

Instagram

Instagram adalah aplikasi jejaring sosial yang dibuat khusus untuk mereka yang suka berbagi foto dan video ke semua teman mereka. Saat ini ada banyak sekali selebritis di Instagram agar bisa lebih dekat dengan penggemarnya. Kerangka kerja Django menjalankan Instagram juga.

Mozilla Firefox

Browser kedua yang paling banyak digunakan di dunia setelah Google Chrome adalah browser Mozilla. Sekarang halaman bantuan Mozilla dibangun dengan kerangka Django.

Pinterest

Jutaan pengguna di seluruh dunia menemukan ide dan inspirasi baru mereka dari Pinterest. Pinterest menggunakan kerangka kerja Django (modifikasi dilakukan sesuai kebutuhan mereka) untuk menjalankannya.

NASA

Situs web resmi National Aeronautics and Space Administration adalah tempat bagi jutaan pengguna untuk mengunjungi dan melihat berita, gambar, video, dan podcast yang disediakan oleh agensi perdana. Django mengembangkan beberapa bagian khusus dari situs web resmi NASA.

The Washington Post

Jika ada satu surat kabar berpengaruh di dunia, tentu itu adalah Washington Post. Situs web The Washington Post adalah sumber berita online yang sangat populer untuk melengkapi koran harian mereka. Jumlah besar tampilan dan lalu lintasnya telah dengan mudah ditangani oleh kerangka kerja web Django.

Hadiah Reddit

Situs web Reddit yang sangat populer telah meluncurkan platform pertukaran hadiah dan pertemuan online anonim yang disebut Reddit Gifts. Situs ini menghubungkan pengguna dari seluruh dunia dan memfasilitasi pertukaran hadiah di antara mereka. Kerangka web Django memberdayakan fungsionalitasnya.

Prezi

Prezi adalah alternatif berbasis awan untuk Microsoft PowerPoint yang dibangun di atas kerangka kerja Django. Situs ini menyediakan kanvas virtual yang dapat dimanipulasi dan diperbesar dan diperkecil. Ini memberikan tampilan keseluruhan presentasi daripada slide individual.

Memasang dan Membuat proyek dan aplikasi Django

Sebelum memasang Django, kita harus memastikan bahwa Python dipasang. Dengan asumsi Anda menggunakan virtualenv, django instalasi pip sederhana sudah cukup.

Memasang lingkungan virtual dan Django

Di bawah ini adalah proses untuk memasang lingkungan virtual dan Django di lingkungan windows Anda -

Untuk memverifikasi apakah Django dipasang dengan benar, ketikkan kode yang diberikan di bawah ini -

Membuat Proyek Django

Setelah instalasi selesai, kita perlu membuat proyek Django.

Menjalankan perintah di bawah ini di mesin windows Anda akan membuat proyek django berikut -

django-admin startproject my_project_name

Mengetik dir akan menampilkan satu file baru dan satu direktori baru seperti yang ditunjukkan di atas.

manage.py- manage.py adalah file Python yang dapat dieksekusi baris perintah yang hanya pembungkus di sekitar django-admin. Ini membantu kami mengelola proyek kami yang tersirat dalam namanya juga.

Dengan ini, itu membuat direktori bernama, myFirstDjangoProjectdi dalam myFirstDjangoProject yang mewakili root konfigurasi untuk proyek kami. Mari kita telusuri lebih dalam.

Mengonfigurasi Django

Dengan memanggil direktori myFirstDjangoProject "akar konfigurasi", maksud kami direktori ini menyimpan berkas yang diperlukan untuk secara umum mengkonfigurasi proyek Django kami. Hampir semua hal di luar direktori ini akan difokuskan hanya pada "logika bisnis" yang terkait dengan model proyek, tampilan, rute, dll. Semua titik yang menghubungkan proyek bersama akan mengarah ke sini.

  • __init__.py - Ini kosong dan mengubah direktori menjadi paket Python yang dapat diimpor.

  • settings.py - Seperti namanya, ini adalah tempat di mana sebagian besar item konfigurasi akan ditetapkan.

  • urls.py - URL disetel dengan urls.py. Dengan ini, kami tidak perlu menulis secara eksplisit setiap URL untuk proyek di file ini. Bagaimanapun, kita harus memberitahu Django tentang dimana URL telah dideklarasikan (yaitu, kita perlu menghubungkan URL lain di urls.py).

  • Wsgi.py - Ini untuk membantu aplikasi dalam produksi dan mirip dengan aplikasi lain seperti Flask, Tornado, Pyramid yang mengekspos beberapa objek “app”.

Mengatur pengaturan

Melihat ke dalam settings.py akan mengungkapkan ukurannya yang cukup besar - dan ini hanyalah default. Hal-hal lain yang perlu kita perhatikan adalah berkas statis, basis data, berkas media, integrasi awan atau lusinan cara lain agar proyek Django dapat dikonfigurasi. Mari kita pahami beberapa poin yang disebutkan dalam file settings.py -

  • BASE_DIR- Ini berguna untuk mencari file. Di dalam file setting.py, parameter BASE_DIR menetapkan jalur absolut ke direktori dasar.

  • SECRET_KEY- Digunakan untuk membuat hash. Secara umum, kami menggunakan secret_key untuk cookie, sesi, perlindungan csrf, dan token autentikasi.

  • DEBUG - Kami dapat mengaturnya ke proyek yang berjalan baik dalam mode pengembangan atau produksi.

  • ALLOWED_HOSTS- Kami menyediakan daftar nama host tempat aplikasi kami disajikan. Dalam mode pengembangan, itu opsional untuk ditetapkan; bagaimanapun, dalam mesin produksi, kita perlu menyetel proyek Django kita.

  • INSTALLED_APPS- Ini adalah daftar "aplikasi" Django yang saat ini terpasang dan berjalan dalam proyek Django kami. Django bawaan menyediakan enam aplikasi terpasang sebagai berikut -

    • 'django.contrib.admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE- Ini membantu proyek Django kami untuk berjalan. Ini adalah kelas python yang menghubungkan ke pemrosesan permintaan / tanggapan django.

  • TEMPLATES- Ini mendefinisikan bagaimana dokumen harus ditampilkan di frontend. Templat Django digunakan untuk memproduksi format berbasis teks apapun.

  • WSGI_APPLICATION- Setiap server yang kami siapkan harus tahu di mana file WSGI berada. Jika Anda menggunakan server eksternal, itu akan terlihat di pengaturannya sendiri. Secara default, ini menunjuk ke objek di wsgi.py.

  • DATABASES- Ini set ke database proyek Django kita sedang mengakses. Ini wajib untuk mengatur database default. Jika kita mengatur database pilihan kita, kita perlu menyebutkan beberapa hal yang berhubungan dengan database seperti - HOST, USER, PASSWORD, PORT, NAMA database, dan MESIN yang sesuai.

  • STATIC_URL- Ini adalah URL yang akan digunakan saat merujuk ke file statis yang terletak di STATIC_ROOT. Secara default, tidak ada.

Namun, kami mungkin perlu menambahkan jalur untuk file statis. Turun ke akhir file, dan tepat di bawah entri STATIC_URL, tambahkan yang baru bernama STATIC_ROOT seperti yang ditunjukkan di bawah ini -

myFirstDjangoProject/settings.py

STATIC_URL = '/ statis /'

STATIC_ROOT = os.path.join (BASE_DIR, 'statis')

Menyiapkan Database

Ada banyak perangkat lunak basis data berbeda yang dapat menyimpan tanggal untuk situs Anda. Kami akan menggunakan yang default, sqlite3.

Ini sudah diatur di bagian yang diberikan di bawah ini dari Anda myFirstDjangoProject/settings.py -

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

Untuk membuat database untuk blog kita, jalankan perintah berikut di konsol - python manage.py migrate (kita harus berada di direktori myFirstDjangoProject yang berisi file manage.py.

Anda akan mendapatkan hasil berikut jika semuanya berjalan dengan baik -

Memulai Server Web

Anda harus berada di direktori yang berisi file manage.py. Di konsol, kita dapat memulai server web dengan menjalankan python manage.py runserver sebagai berikut -

Sekarang yang perlu Anda lakukan adalah memeriksa apakah situs web Anda berjalan. Buka browser Anda (Firefox, Chrome, Safari, Internet Explorer atau apapun yang Anda gunakan) dan masukkan alamat ini -

http://127.0.0.1:8000/

atau

http://localhost:8000/ # Karena server web kami hanya berjalan di mesin lokal kami.

Selamat! Anda baru saja membuat situs web pertama Anda dan menjalankannya menggunakan server web!

Saat server web berjalan, Anda tidak akan melihat prompt baris perintah baru untuk memasukkan perintah tambahan. Terminal akan menerima teks berikutnya tetapi tidak akan menjalankan perintah baru. Ini karena server web terus berjalan untuk mendengarkan permintaan yang masuk.

Model Django

Kami mencoba membuat model Django yang akan menyimpan semua kiriman di blog kami. Tetapi untuk memastikannya berhasil, kita perlu belajar tentang objek.

Objek

Objek adalah kumpulan properti dan tindakan. Mari kita pahami ini dengan sebuah contoh. Misalkan kita ingin memodelkan kucing, kita akan membuat sebuah objek bernama Cat yang memiliki sifat seperti warna, umur, mood (baik / buruk / mengantuk) dan pemilik.

Kemudian Kucing memiliki beberapa tindakan: mendengkur, menggaruk, atau memberi makan.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

Jadi pada dasarnya kami mencoba mendeskripsikan hal-hal nyata dalam kode dengan properti (disebut properti objek) dan tindakan (disebut metode).

Saat kita membangun blog, kita membutuhkan beberapa konten teks dan judul. Juga diperlukan nama penulis, tanggal pembuatan dan juga tanggal publikasi.

Jadi blog kita akan memiliki objek berikut -

Post 
-------- 
title 
text 
author 
created_date 
published_date

Juga kami perlu memiliki beberapa metode yang menerbitkan posting itu. Karena kita sekarang menyadari apa itu objek, kita dapat membuat model Django untuk posting blog kita.

Model adalah jenis objek khusus di Django dan disimpan dalam database. Kami akan menyimpan data kami di database SQLite.

Membuat aplikasi

Agar semuanya jelas, kami akan membuat aplikasi terpisah di dalam proyek kami. Di bawah ini, kami akan mencoba membuat aplikasi web blog dengan menjalankan perintah sederhana yang disebutkan di bawah ini.

Sekarang kita akan melihat bahwa direktori myBlog baru dibuat dan sekarang berisi sejumlah file. Direktori dan file dalam proyek kami harus seperti berikut -

Setelah membuat aplikasi, kita juga perlu memberi tahu Django untuk menggunakannya. Kami melakukannya di file myFirstDjangoProject / settings.py.

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

Membuat model posting blog

Dalam myBlog/models.py file, kita mendefinisikan semua objek yang disebut Model - ini adalah tempat di mana kita akan mendefinisikan posting blog kita.

Mari buka myBlog / models.py, hapus semuanya darinya, dan tulis kode sebagai berikut -

Pertama, kami mengimpor beberapa fungsi dari file lain dengan memanggil dari atau mengimpor. Jadi dengan ini, alih-alih menyalin dan menempelkan hal yang sama di setiap file, kita dapat menyertakan beberapa bagian denganfrom and import.

class Post(models.Model) - Baris ini mendefinisikan model kita (itu adalah objek).

  • class adalah kata kunci khusus yang menunjukkan bahwa kita sedang mendefinisikan suatu objek.

  • Post adalah nama model kita. Selalu mulai nama kelas dengan huruf besar.

  • models.Model berarti bahwa Posting adalah Model Django, jadi Django tahu bahwa ini harus disimpan dalam database.

Sekarang mari kita bahas tentang properti yang kita definisikan di atas: judul, teks, tanggal_cipta, tanggal_diterbitkan dan pengarang. Untuk melakukan itu, kita perlu mendefinisikan tipe tiap field.

  • models.CharField - Ini adalah cara Anda mendefinisikan teks dengan jumlah karakter terbatas.

  • Models.TextField - Ini untuk teks panjang tanpa batas.

  • Models.DateTimeField - Ini untuk tanggal dan waktu.

  • Models.ForeignKey - Ini adalah tautan ke model lain.

Kami mendefinisikan fungsi / metode dengan def dan publikasikan adalah nama metode tersebut.

Metode sering mengembalikan sesuatu. Di sini ketika kita memanggil __str __ (), kita akan mendapatkan teks (string) dengan judul Post.

Membuat tabel untuk model di database Anda

Langkah terakhir adalah menambahkan model baru ke database kita. Pertama, kita harus membuat Django mengerti bahwa kita telah membuat beberapa perubahan dalam model kita. Mari kita lakukan hal yang sama di jendela konsol kita dengan perintahpython manage.py make migrations myBlog seperti yang ditunjukkan di bawah ini -

Kemudian, Django menyiapkan berkas migrasi yang sekarang harus kita terapkan ke basis data kita. Di konsol kami, kami dapat mengetik:python manage.py migrate myBlog dan hasilnya harus sebagai berikut -

Model Post kami sekarang ada di database kami.

Admin Django

Untuk menambah, mengedit dan menghapus tulisan yang baru saja kita modelkan, kita menggunakan admin Django.

Jadi mari kita buka myBlog/admin.py file dan letakkan di bawah isinya -

Pertama, kami mengimpor (menyertakan) model Post yang ditentukan di bab sebelumnya. Untuk membuat model kita terlihat di halaman admin, kita perlu mendaftarkan model dengan admin.site.register (Post).

Untuk masuk ke situs admin, Anda perlu membuat superuser - akun pengguna yang memiliki kendali atas semua yang ada di situs. Jadi hentikan webserver dan ketik python baris perintahmanage.py createsuperuser, dan tekan enter.

Oke, sekarang saatnya untuk melihat model Post kita. Ingatlah untuk menjalankan python manage.py jalankan server di konsol untuk menjalankan server web. Buka browser Anda dan ketik alamatnyahttps://127.0.0.1:8000/admin/.Masuk dengan kredensial yang baru saja kita pilih. Kemudian Anda akan melihat dasbor admin Django seperti di bawah ini -

Buka Postingan dan bereksperimen sedikit dengannya. Anda dapat menambahkan banyak posting blog, dan konten dari mana saja. Blog Anda akan terlihat seperti ini -

Ini hanyalah gambaran umum dari Django dan kami dapat membuat blog hanya dengan beberapa baris kode.