API Django Grooveshop
Ringkasan
Proyek ini memberikan API tanpa kepala yang kuat menggunakan Django dan Django REST Framework, dengan dukungan untuk lingkungan sinkron dan asinkron yang masing-masing difasilitasi oleh Uvicorn (ASGI) dan Gunicorn (WSGI). Ini memanfaatkan Django Allauth untuk otentikasi, menggunakan Seledri dengan Redis untuk manajemen tugas, dan menggunakan Postgres untuk penyimpanan data. Fitur-fiturnya termasuk caching, dukungan multi-bahasa, dan cakupan pengujian yang komprehensif. API juga menyertakan panel admin Django bawaan untuk operasi administratif yang efisien.
Struktur Proyek
Aplikasi Django dalam proyek ini meliputi:
- Inti : Fungsi inti dan utilitas bersama.
- Pengguna : Manajemen pengguna dan otentikasi.
- Produk : Manajemen katalog produk.
- Pesanan : Pemrosesan dan pengelolaan pesanan.
- Pencarian : Kemampuan pencarian lanjutan.
- Slider : Penggeser UI dinamis untuk promosi dan sorotan.
- Blog : Manajemen konten untuk postingan blog.
- SEO : Alat dan konfigurasi SEO.
- Tip : Bagian tip dan saran pengguna.
- PPN : Perhitungan dan pengelolaan PPN.
- Negara : Konfigurasi khusus negara.
- Wilayah : Data dan pengaturan regional.
- Cara Pembayaran : Konfigurasi metode pembayaran.
- Sesi : Manajemen sesi pengguna.
- Keranjang : Fungsi keranjang belanja.
- Notifikasi : Mekanisme notifikasi pengguna.
- Otentikasi : Lapisan otentikasi tambahan.
- Kontak : Manajemen kontak dan alat komunikasi.
Fitur
- Otentikasi dan Manajemen Pengguna : Akun pengguna dan manajemen sesi yang disederhanakan.
- Dukungan Multi-Bahasa : Mengakomodasi berbagai bahasa yang meningkatkan kegunaan global.
- Pencarian dan Pemfilteran Tingkat Lanjut : Memanfaatkan Pencarian Teks Lengkap Postgres untuk pengambilan data yang efisien.
- Penjadwalan Tugas : Memanfaatkan Seledri untuk manajemen tugas latar belakang.
- Pengoptimalan Kinerja : Menerapkan strategi caching untuk meningkatkan respons API.
- Pengujian : Mencakup pengujian unit dan integrasi yang komprehensif.
- Panel Admin : Panel admin bawaan Django untuk pengelolaan langsung.
- Dokumentasi API : API yang terdokumentasi dengan baik menggunakan Swagger dan Redoc.
- Kontainerisasi : Integrasi Docker untuk penyederhanaan pengaturan dan penerapan.
Teknologi
- Kerangka : Django, Kerangka Django REST
- Otentikasi : Django Allauth
- Basis Data : PostgreSQL
- Manajemen Tugas : Seledri
- Pialang Pesan : Redis
- Pengaturan Server : Uvicorn (ASGI), Gunicorn (WSGI)
- Kontainerisasi : Docker
Pengaturan
Prasyarat
- Python 3.13 atau lebih tinggi
- Django 5.0 atau lebih tinggi
- PostgreSQL
- ulang
Lisensi
Proyek ini bersumber terbuka di bawah Lisensi MIT. Lihat file LISENSI untuk lebih jelasnya.
Perintah Docker untuk Proyek Django
Menggunakan Docker Tulis
Operasi Basis Data
- Jalankan Migrasi DB :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- Terapkan Migrasi :
docker compose run backend sh -c "python manage.py migrate"
Manajemen Pengguna
- Buat Pengguna Super :
docker compose run backend sh -c "python manage.py createsuperuser"
File Statis
- Kumpulkan File Statis :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
Pengujian dan Cakupan
- Jalankan Tes :
docker compose run backend sh -c "python manage.py test tests/"
- Jalankan Pengujian dengan Cakupan (tidak termasuk file dan folder tertentu):
docker compose run backend sh -c "coverage run --omit=*/migrations/*,*/management/*,*/manage.py,*/setup.py,*/asgi.py,*/wsgi.py --source='.' manage.py test tests/ && coverage report && coverage html"
- Hasilkan Laporan HTML Cakupan :
docker compose run backend sh -c "coverage html"
Penyemaian Data
- Basis Data Benih dengan Data Palsu :
docker compose run backend sh -c "python manage.py seed_all"
File Tulis Docker Kustom
- Jalankan dengan File Tulis Tertentu :
docker compose -f <docker-compose-file.yml> up -d --build
Menggunakan Docker Exec
Perintah Umum
- Jalankan Perintah di Kontainer :
docker exec -it <container_id> <command>
- Jalankan Perintah Shell Tertentu :
docker exec -it <container_id> sh -c "<command>"
Lokalisasi
- Hasilkan Pesan Lokal :
docker exec -it <container_id> sh -c "python manage.py makemessages -l <locale>"
docker exec -it <container_id> sh -c "python manage.py makemessages --all --ignore=env"
- Kompilasi Pesan Lokal :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
Konfigurasi Tambahan untuk Alat Pengembangan
Seledri
Memulai Layanan Seledri
- Jalankan penjadwal ketukan Seledri lokal menggunakan penjadwal basis data Django:
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- Jalankan pekerja Seledri :
celery -A core worker -E -l info --pool=solo
- Pantau Seledri Berbunga :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
Uvicorn
Menjalankan Aplikasi ASGI
- Mulai Uvicorn untuk aplikasi ASGI :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
Pengaturan dan Utilitas Pengembangan Python
Python Versi 3.13.1
Manajemen Lingkungan Virtual
- Instal Virtualenv :
pip install virtualenv
- Buat Lingkungan Virtual :
virtualenv <env_name>
- Aktifkan Lingkungan Virtual :
- Unix/Linux:
source <env_name>/bin/activate
- Windows:
<env_name>Scriptsactivate
- Nonaktifkan Lingkungan Virtual :
deactivate
- Persyaratan Instal :
pip install -r requirements.txt
- Instal Persyaratan Khusus Lingkungan :
pip install -r requirements/<env_name>.txt
Perintah Django
- Instal Django :
pip install django
- Memulai Proyek Baru :
django-admin startproject <project_name>
- Mulai Aplikasi Baru :
python manage.py startapp <app_name>
- Migrasi dan Manajemen Basis Data :
- Lakukan migrasi:
python manage.py makemigrations
- Terapkan migrasi:
python manage.py migrate
- Siram database:
python manage.py sqlflush
- Isi database dengan data awal (Contoh Pabrik Tunggal):
python manage.py factory_seed --model="BlogPost" --count="100"
- Isi database dengan data benih (Contoh Semua Pabrik):
python manage.py seed_all --model-counts="Country=10,Product=100"
- Kelola Pengguna :
- Buat pengguna super:
python manage.py createsuperuser
- Kelola File Statis :
python manage.py collectstatic
- Pengujian dan Debug :
- Jalankan tes:
python manage.py test
- Akses shell Django:
python manage.py shell
- Cangkang yang ditingkatkan:
python manage.py shell_plus
- Cangkang basis data:
python manage.py dbshell
- Jalankan Server Pengembangan :
python manage.py runserver
Pemformatan Kode dan Linting
- Arahkan ke Direktori Sumber :
cd src
- Pra-komitmen dan Pemformatan Hitam :
- Pasang kait pra-komit:
pre-commit install
- Jalankan kait pra-komit:
pre-commit run --all-files
- Format kode dengan Black:
black .
Puisi untuk Manajemen Ketergantungan
- Instal Puisi : Unix/Linux:
curl -sSL https://install.python-poetry.org | python3 -
Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- Kelola Proyek dan Ketergantungan :
- Buat proyek baru:
poetry new <project_name>
- Instal dependensi:
poetry install
- Menambah atau menghapus ketergantungan:
poetry add <dependency_name>
dan poetry remove <dependency_name>
- Perbarui file ketergantungan atau kunci tertentu:
poetry update <dependency_name>
dan poetry lock
- Jalankan skrip:
poetry run <script_name>
- Masuk ke shell lingkungan virtual:
poetry shell
Cara meningkatkan persyaratan pip secara otomatis.txt
- Menggunakan pip-peningkatan :
- Jalankan pip-upgrader :
pip-upgrade
Grafik StroberiQL
- Instal Strawberry :
pip install strawberry-graphql
- Jalankan Strawberry Server :
strawberry server
- Jalankan dengan Project Schema :
strawberry server core.graphql.schema:schema
Kerangka Django REST - Spektakuler
- Hasilkan Skema API :
python manage.py spectacular --color --file schema.yml
Penggunaan Perintah Git
Manajemen Tag
Menghapus Tag
Hapus Tag Jarak Jauh :
- Hapus semua tag jarak jauh:
git tag -l | xargs -n 1 git push --delete origin
Hapus Tag Lokal :
- Hapus semua tag lokal:
git tag -l | xargs git tag -d