Mengungkap Sihir Django
Diterbitkan: 2022-03-10Menurut dokumentasi resmi,
Django adalah kerangka kerja Web Python tingkat tinggi yang mendorong pengembangan cepat dan desain pragmatis yang bersih. Dibangun oleh pengembang berpengalaman, ini menangani banyak kerumitan pengembangan Web, sehingga Anda dapat fokus pada penulisan aplikasi Anda tanpa perlu menemukan kembali roda. Ini gratis dan open source.
— DjangoProject.com
Ini adalah salah satu kerangka kerja populer Python untuk membangun aplikasi web dan paling disukai karena skalabilitasnya dalam membuat boilerplate dengan konfigurasi dan file yang ditetapkan. Ini membungkus seluruh tujuan Django untuk pengembang;
"...membangun aplikasi hebat dalam waktu singkat dan tidak terlalu mengkhawatirkan pengaturan dasar."
Ada konfigurasi dasar, file, dan gaya yang melintasi semua aplikasi web, apa pun yang Anda buat. Saat menggunakan Django, ini dihasilkan untuk Anda secara otomatis saat Anda menjalankan perintah tertentu pada titik berbeda dalam siklus pengembangan aplikasi Anda. Dengan ini, Anda akan memiliki cukup waktu untuk fokus pada aspek inti dari pengembangan aplikasi Anda sementara Django menangani yang lain untuk Anda.
Ini berarti bahwa ada banyak hal yang terjadi di bawah tenda. Untuk seseorang yang tidak memiliki pemahaman penuh tentang bagian yang bergerak, ini bisa sangat melelahkan. Dalam artikel ini kita akan belajar tentang hal berikut:
- Pemasangan Django
- Perintah
startproject
danstartapp
- File konfigurasi Django yang meliputi;
- setting.py
- urls.py
- kelola.py
- Tata Letak Model
- Rute
Kita akan belajar bagaimana semua ini cocok bersama dan peran yang mereka mainkan. Penting untuk diketahui bahwa tidak mungkin untuk melihat pada segala sesuatu yang terjadi di dalam Django. Untuk kasus di luar cakupan tutorial ini, akan ada tautan untuk mengarahkan Anda ke sumber daya yang akan membantu.
Untuk tujuan pembelajaran, kami akan membangun platform e-commerce. Ini bukan situs e-commerce yang lengkap, aplikasi kita hanya akan memiliki dua fitur dasar; membuat produk dan membuat pesanan dari pandangan admin.
Artikel ini akan memandu Anda dalam memahami perintah, file dan dasar-dasar Django yang dibuat sebelumnya. Ini ditargetkan pada pengembang yang telah menggunakan Django atau berniat menggunakannya dan ingin mengetahui apa yang terjadi di balik tenda. Meskipun tidak wajib bahwa Anda harus menggunakan Django, memiliki pengalaman dengan dasar-dasar Django sebelum melanjutkan dengan artikel ini akan memberi Anda keuntungan. Anda harus memiliki pengetahuan tentang Python untuk sepenuhnya memahami apa yang akan dibahas dalam bagian ini.
Memasang Django
Jika Anda belum menginstal Django, berikut adalah langkah-langkah untuk melakukannya.
Pertama, buat lingkungan virtual, bernama djangodev
. Anda memerlukan ini untuk mengisolasi ruang kerja Django Anda dan paket-paket dependennya.
python3 -m venv ~/.virtualenvs/djangodev
Sekarang untuk masuk ke lingkungan virtual Anda, Anda harus mengaktifkannya;
source ~/.virtualenvs/djangodev/bin/activate
Jika Anda mendapatkan kesalahan yang berjalan dengan source
, Anda dapat menggunakan perintah alternatif ini,
. ~/.virtualenvs/djangodev/bin/activate
Untuk pengguna Windows, gunakan ini sebagai gantinya,
...\> %HOMEPATH%\.virtualenvs\djangodev\Scripts\activate.bat
Catatan: Anda perlu mengaktifkan lingkungan virtual kapan saja Anda ingin menggunakan Django.
Sekarang Anda berada di env virtual Anda, instal Django:
python -m pip install Django
Untuk memeriksa apakah Django telah diinstal dengan benar, jalankan;
python -m django --version
Shakaboom! Sekarang Anda siap untuk sihir, siapkan tongkat Anda!
Metode membuat file dan folder saat bepergian mungkin sederhana dan mudah. Namun, itu tidak ideal ketika Anda harus membuat proyek menengah atau besar dan tenggat waktu yang harus diselesaikan. Kami selalu memiliki tenggat waktu untuk dikalahkan, bahkan untuk proyek pribadi.
Mengikuti metode ini saat membuat proyek besar baru, Anda harus membuat banyak file dan folder dan membuat beberapa pengaturan, yang dapat menyebabkan pembuatan bug yang dapat dihindari dan banyak waktu yang terbuang. perintah startproject
dan startapp
yang tersedia bagi kita melalui Django bertujuan untuk memecahkan masalah ini. Kedua perintah ini membuat file, folder, dan melakukan banyak konfigurasi untuk Anda.
Mari kita mulai dengan membuat aplikasi baru menggunakan perintah startproject
.
Perancah Sebuah Aplikasi
Kami akan membuat aplikasi kami dan melihat file yang dihasilkan, serta beberapa perintah yang akan kami gunakan. Jalankan perintah ini di terminal Anda untuk memulai;
django-admin startproject ecommerce_site
Saat memasang Django, django-admin
ditambahkan ke jalur Anda untuk memberikannya akses untuk melakukan tindakannya. Ini adalah utilitas baris perintah Django untuk tanggung jawab administratif. Pelajari lebih lanjut penggunaan django-admin
di sini; itu sedikit di luar cakupan artikel ini.
startproject
adalah perintah Django yang membantu menghasilkan proyek . Di sini kami memberikannya nama proyek kami ecommerce_site . Kemudian dilanjutkan dengan membuat proyek di direktori yang disebut ecommerce_site . Direktori akan terlihat seperti ini,
Kita harus menavigasi ke direktori yang baru dibuat dan menjalankan perintah untuk menghasilkan aplikasi .
cd ecommerce_site python manage.py startapp trading
startapp
adalah perintah yang dijalankan oleh manage.py
di direktori proyek, itu membuat banyak file, dan folder bernama menggunakan nama yang ditentukan dalam perintah, dalam hal ini, yang ditentukan adalah trading
. Folder aplikasi terdiri dari file sederhana yang diperlukan untuk membuat fitur aplikasi. Sekarang direktori Anda akan terlihat seperti ini:
Jika Anda bertanya-tanya perbedaan antara proyek dan aplikasi. Sebuah proyek adalah aplikasi web Django, dapat terdiri dari satu atau lebih aplikasi. Ini adalah folder yang menyimpan manage.py
dan modul lain yang menyertakan settings.py
dan file lainnya. Aplikasi adalah paket python yang melakukan fitur tertentu, termasuk file seperti models.py
, direktori migrasi , dan lainnya. Anda dapat melihat jawaban ini di Stack Overflow untuk informasi lebih lanjut.
startproject
akan membuat direktori proyek utama, sedangkan startapp
akan membuat direktori app. Keduanya juga sudah mewariskan nama untuk digunakan secara turun temurun. startproject
adalah perintah pertama yang dijalankan saat membuat proyek baru, sedangkan startapp
dijalankan di dalam direktori proyek baru.
Tata letak saat ini adalah pemetaan hebat yang dapat Anda gunakan untuk aplikasi apa pun yang Anda bangun. Ini scalable dan terdiri dari file yang Anda perlukan. Ada peluang untuk membuat, mengganti nama, mengedit, dan memindahkan file di dalam proyek.
Konfigurasi Django
Django menyediakan pengaturan dan konfigurasi yang berbeda untuk Anda, setelah menjalankan dua perintah dalam file yang berbeda, mari kita jalankan melalui file yang dihasilkan untuk mempelajari apa yang masing-masing lakukan.
settings.py
Sebagian besar aplikasi web memerlukan konfigurasi seperti; otentikasi untuk memverifikasi pengguna, izin untuk mengizinkan pengguna tertentu dengan kemampuan tertentu dan menetapkan standar keamanan. Semua ini diperlukan untuk memberikan pengalaman terbaik yang dibutuhkan pengguna Anda. Ini akan memakan waktu lama bagi Anda sebagai pengembang untuk mulai menggulirkan masing-masing ini sendiri, untuk setiap aplikasi yang Anda kerjakan.
Django menyediakan Anda dengan konfigurasi yang diperlukan ini dan lebih banyak lagi — sehingga Anda dapat memilih yang Anda inginkan dan menghubungkannya. Ini dilakukan di settings.py
, sudah ada pengaturan yang dibuat untuk menyediakan fungsionalitas dasar bagi Anda.
Ketika Django mencoba menjalankan proyek, ada variabel tertentu yang dicarinya. settings.py
adalah file yang menyimpan variabel-variabel yang mengarah ke file atau informasi lain. Django diarahkan ke file ini dari file manage.py
dan mengambil informasi atau memuat file lain yang dibawanya dari sini.
Konfigurasi ini meliputi:
-
DEBUG
FungsionalitasDEBUG
disetel keTrue
untuk mengaktifkan pembacaan kesalahan dan kode debug dalam pengembangan, fungsi ini harus disetel keFalse
selama produksi (yaitu saat Anda menerapkan). Pengaturan ini memungkinkan Anda untuk dapat men-debug kode Anda lebih baik dengan bantuan Django ketika ia mencoba menjalankan kode Anda. -
INSTALLED_APPS
Ini adalah daftar semua aplikasi yang menjalankan fitur tertentu di Django. Muncul dengan beberapa aplikasi default seperti'django.contrib.auth'
yang digunakan untuk otentikasi pengguna,django.contrib.admin'
untuk fungsionalitas admin, dan'django.contrib.messages'
diperlukan dalam mengirimkan pemberitahuan atau info kepada pengguna. Aplikasi lain yang Anda buat menggunakan perintahstartapp
harus ada di sini sebelum dapat dijalankan oleh Django. -
MIDDLEWARE
adalah kerangka kerja ringan untuk memproses masukan dan keluaran melalui permintaan dan tanggapan Django. Setiap middleware melakukan fungsi tertentu dengan aplikasi, seperti'django.contrib.auth.middleware.AuthenticationMiddleware'
bekerja dengan'django.contrib.sessions'
untuk mengaitkan pengguna dengan permintaan. Anda harus memeriksa fitur lebih lanjut dari setiap middleware di dokumen. -
ROOT_URLCONF
adalah variabel ke jalur di mana Django mencariurlpatterns
Anda saat permintaan diteruskan ke aplikasi Django Anda. Kapanpun permintaan dibuat dalam aplikasi Django, Django mencari variabel ini dan memuat file utama dan loopurlpatterns
daftar pola-url dalam mencari jalur yang cocok. -
TEMPLATES
adalah pengaturan untuk memungkinkan rendering file HTML untuk mewakili tampilan. Ini berkomunikasi dengan aplikasi permintaan, autentikasi, dan pesan. Nilai'BACKEND'
dan'APP_DIRS'
disetel keTrue
memungkinkan Django untuk mencari file HTML di dalam folder /templates .'context_processors'
diOPTIONS
adalah callable , yang menerima permintaan sebagai argumen dan menggabungkannya dengan konteks saat template dirender, callable ini berfungsi untuk membantu proses debug, autentikasi, dan penanganan permintaan secara umum. -
WSGI_APPLICATION
adalah jalur yang mengarah ke variabelapplication
dalam filewsgi.py
-
DATABASE
adalah kamus yang menyimpan akses ke database eksternal (atau internal seperti dalam kasus sqlite default) seperti PostgresSQL, MySQL dan MongoDB. Berikut adalah contoh database Postgres yang akan saya gunakan sebagai contoh:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'db_name', 'USER': 'db_user', 'PASSWORD': 'db_password', 'HOST': 'localhost', 'PORT': '', } }
Anda dapat memutuskan untuk menggunakan database sqlite default, ini tidak berfungsi dengan baik untuk produksi. Anda dapat mengatur database Postgres seperti di atas, Anda harus membuat database terlebih dahulu dan memberikan pengguna, kata sandi dengan izin menulis ke database.
Catatan : Untuk tujuan tutorial ini, Anda sudah dapat menggunakan set database sqlite default. Di atas adalah demonstrasi tentang bagaimana Anda dapat mengatur koneksi database SQL dan NO-SQL di Django.
-
AUTH_PASSWORD_VALIDATORS
ini adalah fungsi yang dipanggil untuk validasi kata sandi. Mereka dipanggil saat membuat catatan pengguna (dan juga admin), mengatur ulang, dan mengubah kata sandi. Anda dapat mempelajari lebih lanjut tentang mereka dari dokumentasi resmi.
Dokumentasi lebih lanjut tentang pengaturan dapat ditemukan di sini.
manage.py
Sebagian besar proyek web memerlukan titik masuk tempat perintah dimulai. Titik masuk yang bertindak sebagai pintu gerbang ke dalam aplikasi. Dalam setiap proyek Django, biasanya file manage.py
.
File ini diperlukan sebagai titik awal dalam aplikasi Anda. Dari sini, semua perintah dijalankan dan semuanya dimulai di sini.
manage.py
melakukan fungsi yang sama dengan Django-admin. Ia juga memberitahu Django lokasi untuk konfigurasi yang Anda miliki dalam aplikasi Anda. Ini diatur secara default dan tidak perlu diubah.
Ini menggunakan fungsi def main()
untuk menangani modul pengaturan default ke file settings.py
kami. Ia mencoba mengimpor fungsi eksekusi, dan jika mengalami kesalahan, ia melempar ImportError
. Jika tidak, dibutuhkan argumen apa pun yang dilewatkan oleh sys.argv
dari baris perintah dan dijalankan.
sys.argv
adalah daftar yang menerima perintah yang diteruskan melalui terminal. Saat kita menjalankan python manage.py runserver
di baris perintah, sys.argv
disetel ke ["manage.py", "runserver"]
dan ini diteruskan ke fungsi execute()
.
Argumen seperti python manage.py startapp trading
atau python manage.py makemigrations
diatur ke [ "manage.py", "startapp", "trading"]
dan ["manage.py", "makemigrations"]
masing-masing untuk dieksekusi.
Pernyataan if diatur untuk dijalankan jika perintah yang diberikan diatur ke manage.py
.
Selain menjalankan fungsi django-admin
, Anda akan menggunakannya dalam menjalankan server, menangani migrasi, dan perintah lain yang akan digunakan proyek Anda. Anda juga akan membutuhkannya saat menerapkan, menguji, dan men-debug proyek Anda.
Tata Letak Model
Django menyediakan tata letak pemodelan sederhana untuk Anda. Anda mengonfigurasi model Anda di file models.py
di direktori trading
. Kelas Anda (atau model) adalah tata letak yang akan diikuti oleh tabel database Anda.
Anda mendefinisikan kelas Anda berdasarkan tipe data yang ingin Anda dapatkan dari pengguna (atau admin) untuk setiap tabel. Model kami membuat file migrasi yang berfungsi dengan variabel DATABASE
di settings.py
.
Mari kita buat dua model yang kita perlukan, untuk produk dan pesanan:
from django.db import models class Product(models.Model): name = models.CharField(max_length=50) image = models.ImageField(upload_to='products', default='python.png') price = models.IntegerField() description = models.TextField() def __str__(self): return self.name class Order(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE) quantity = models.IntegerField() date = models.DateField(auto_now_add=True) user = models.CharField(max_length=50) def __str__(self): return self.user
Model produk memiliki kolom nama, harga, deskripsi, dan gambar (yang ketika disimpan akan diunggah ke folder products
. Ini dibuat jika foldernya tidak ada). order
memiliki product
(ditautkan ke tabel products
), jumlah, tanggal, dan kolom pengguna.
Dengan informasi ini, Django membuat skema basis data untuk aplikasi. Juga, buat API akses database Python untuk mengakses objek Produk dan Pesanan. Django memiliki alat migrasi bawaan sehingga Anda tidak perlu menggunakan paket eksternal untuk migrasi.
Langkah selanjutnya adalah menjalankan perintah migrasi dan melakukan migrasi ke database. Tapi sebelum kita melakukannya, kita harus mendaftarkan trading
sebagai aplikasi di direktori proyek kita.
Pertama, kita harus mengonfigurasi direktori perdagangan sebagai aplikasi di Django. Django telah melakukannya untuk Anda di file app.py
File ini mendaftarkan trading
sebagai aplikasi dan akan digunakan lebih lanjut di file settings.py
.
Sekarang, di settings.py
tambahkan trading
di INSTALLED_APP
. Seharusnya terlihat seperti ini:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'trading.apps.TradingConf', ]
Di terminal, jalankan:
$ python manage.py makemigrations trading $ python manage.py migrate
Catatan: Lingkungan virtual Anda harus diaktifkan dan Anda harus berada di dalam direktori proyek.
python manage.py makemigrations trading
mencatat perubahan yang dibuat di modul perdagangan dan membuat file di folder migration
perubahan di models.py
dan python manage.py migrate
kemudian memperbarui perubahan.
Anda dapat menemukan file migrasi yang dihasilkan dari perintah python manage.py makemigrations trading
di direktori migration
bernama 0001_initial.py
. Anda dapat melihat kelas dan kolom sebagai perintah untuk pembuatan di dalam file. Karena lebih banyak perubahan di models.py
dibuat, lebih banyak file akan dibuat di sini.
Fitur Admin
Dalam aplikasi kita saat ini, kita memerlukan fitur admin untuk mengelola produk dan pesanan yang akan dibuat dalam aplikasi. Django memberi kita fungsionalitas admin built-in yang sudah kita miliki. Aplikasi admin (fitur) juga telah terdaftar di daftar INSTALLED_APP
kami; 'django.contrib.admin'
.
Juga, URL untuk admin juga telah terdaftar di daftar urlpatterns
file konfigurasi URL kami urls.py
; path('admin/', admin.site.urls),
. File admin.py
memungkinkan Anda untuk mendaftarkan model dan tindakan CRUD yang akan dilakukan pada model.
Untuk mengatur admin, jalankan ini di terminal:
$ python manage.py createsuperuser
Anda akan diminta untuk memasukkan nama pengguna, email, dan kata sandi. Setelah itu, Anda telah berhasil membuat admin. Untuk memulai fungsionalitas admin, jalankan server:
$ python manage.py runserver
Mengunjungi https://127.0.0.1:8000/admin/ akan mengarah ke sesi login, ketika Anda masuk (dengan nama pengguna dan kata sandi yang Anda buat) Anda diarahkan ke dashboard admin:
Grup dan pengguna adalah konfigurasi default yang memungkinkan admin mengakses manajemen dan izin pengguna. Sekarang mari kita daftarkan model kita.
Di admin.py
, tambahkan baris berikut:
from django.contrib import admin # Register your models here. from .models import Product, Order admin.site.register(Product) admin.site.register(Order)
from django.contrib import admin
mengimpor fungsionalitas admin dari Django, dan kemudian kami mengimpor dua kelas dari models.py
kami dan mendaftarkannya sehingga admin dapat melakukan tindakan CRUD pada produk dan pesanan dari dasbor.
Setelah mendaftarkan model, dasbor Anda akan terlihat seperti ini:
Menambahkan produk:
Membuat pesanan dari dashboard admin:
Perutean Mudah
Setiap situs membutuhkan rute atau URL yang mengarah ke halaman tertentu dengan informasi tertentu untuk pengguna akhir. Kumpulan informasi atau aplikasi serupa diakses dalam rute tertentu. Ada kebutuhan untuk mengelompokkan rute bersama untuk aksesibilitas dan komunikasi dalam file. Django telah melakukannya untuk Anda di file urls.py
urls.py
adalah file yang berasal dari variabel ROOT_CONF
di settings.py
. Di sinilah konfigurasi URL utama kita selesai. Ketika kita membuat tampilan di file atau folder yang berbeda, atau bahkan di file urls.py
, mereka harus dikonfigurasi dalam daftar urlpatterns
.
Django mengharapkan daftar bernama urlpatterns
dalam file. Anda dapat mengubah file dalam variabel ROOT_CONF
ke file lain yang Anda tempatkan dalam daftar urlpatterns
.
urlpatterns = [ path('admin/', admin.site.urls), ]
Daftar tersebut terdiri dari objek-objek yang merupakan instance dari path
atau re-path
. Setiap instance memiliki dua parameter wajib, pola 'admin/'
, dan tampilan atau file URL, admin.site.urls
.
Instance juga dapat mengarah ke file lain dengan lebih banyak konfigurasi URL. Ini dilakukan agar mudah dibaca.
views.py
Kebutuhan penting untuk aplikasi backend adalah tampilan yang dipetakan oleh setiap rute. Di Django, Anda menulis fungsi atau tampilan berbasis kelas untuk aplikasi dalam file views.py
. Tampilan adalah kelas atau fungsi yang memproses permintaan dan mengirimkan kembali respons ke pengguna Anda.
Edit file views.py
Anda menjadi ini:
from django.http import HttpResponse def home(request): return HttpResponse("This is a shopping site for products") def order(request): return HttpResponse("Hello, welcome to our store, browse to our products and order!")
Di sini kami mengimpor HTTPResponse
untuk menggunakannya dalam mendefinisikan dua tampilan (tampilan fungsi) untuk mengembalikan kalimat saat dipanggil. def home
harus dipanggil ketika Anda mengunjungi alamat utama dan def order
ketika Anda mengakses URL pesanan.
Setelah membuat tampilan kami, kami perlu menetapkannya ke rute yang berbeda (atau urlpatterns
). Itu bisa dilakukan dengan beberapa cara, kita bisa membuat daftar urlpatterns
di file yang sama, atau kita bisa mengimpor trading.views
ke file ecommerce_site.urls
dan membuat path.
Cara yang lebih disukai untuk melakukannya adalah membuat file konfigurasi sub URL (di dalam trading
), dan memasukkannya ke dalam ecommerce_site.urls
. Buat file urls.py
di direktori trading
. Direktori Anda akan terlihat seperti:
trading/ __init__.py admin.py apps.py migrations/ __init__.py 0001_initial.py models.py tests.py urls.py views.py
Tambahkan kode berikut ke file baru Anda ( urls.py
)
from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), path('order/', views.order, name='order'), ]
Mari daftarkan file konfigurasi URL trading
( urls.py
) di file konfigurasi URL proyek,
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('trading.urls')) ]
Untuk dapat mengakses urlpatterns
kita akan menggunakan kelas include
dari django.urls
pada baris 2. Kemudian pilih sebuah pola dan lampirkan file urls.py
di direktori trading.
Apa yang kami lakukan di sini adalah mengimpor kelas path
dari Django, dan file views.py
. Kemudian daftar kami terdiri dari dua contoh jalur untuk setiap tampilan. Jadi def home
dipanggil di https://127.0.0.1:8000/.
Dan def order
dipanggil di https://127.0.0.1:8000/order/.
Catatan: Proses menjalankan startproject
dan startapp
tidak wajib tetapi sangat dianjurkan oleh Django. Dan Anda dapat membuat/memindahkan file dan folder setelah menjalankan setiap perintah untuk kenyamanan kerja Anda.
Pohon Ketergantungan
Berikut adalah proses di mana Django memproses permintaan dari URL yang datang:
- Django mencari lokasi akar (jalur) untuk URL Anda dalam variabel
ROOT_CONF
. - Django memuat file python yang diberikan di jalur yang disediakan. Dan menempatkan variabel
urlpatterns
, ini adalah daftar yang berisi semua instance daridjango.urls.path()
dan/ataudjango.urls.re_path()
. - Dalam daftar, Django berjalan berurutan dan mencari URL yang cocok.
- Python, mengimpor dan memanggil tampilan (baik tampilan berbasis fungsi atau berbasis kelas). Yang selanjutnya diteruskan dengan permintaan HTTP.
- Tampilan memproses permintaan dan informasi yang diteruskan dan mengembalikan pesan/templat atau mengalihkan ke tampilan lain.
- Jika tidak ada pola URL yang cocok, atau jika pengecualian dimunculkan selama titik mana pun dalam proses ini, Django memanggil tampilan penanganan kesalahan yang sesuai.
Kesimpulan
Kita telah mempelajari kemungkinan membuat file untuk Django tanpa baris perintah. Juga kita telah mempelajari keuntungan dan blok pembangun dari Proyek Django. Django adalah alat yang luar biasa dalam membangun proyek backend dengan tujuan untuk menciptakan kesederhanaan.
Anda dapat melihat kode untuk tutorial ini di GitHub.
Sumber daya
- Manajemen kata sandi di Django
- Django: Memulai
- Django: Pengaturan
- Django Ringan oleh O'Reilly