Grooveshop Django API
ภาพรวม
โปรเจ็กต์นี้มอบ API ที่ไม่มีส่วนหัวที่แข็งแกร่งโดยใช้ Django และ Django REST Framework พร้อมการรองรับสภาพแวดล้อมทั้งแบบซิงโครนัสและอะซิงโครนัสที่อำนวยความสะดวกโดย Uvicorn (ASGI) และ Gunicorn (WSGI) ตามลำดับ โดยใช้ประโยชน์จาก Django Allauth สำหรับการตรวจสอบสิทธิ์ ใช้ Celery กับ Redis สำหรับการจัดการงาน และใช้ Postgres สำหรับการจัดเก็บข้อมูล คุณสมบัติต่างๆ ได้แก่ การแคช การสนับสนุนหลายภาษา และความครอบคลุมการทดสอบที่ครอบคลุม API ยังมีแผงผู้ดูแลระบบ Django ในตัวเพื่อการดำเนินการดูแลระบบที่มีประสิทธิภาพ
โครงสร้างโครงการ
แอปพลิเคชัน Django ภายในโปรเจ็กต์นี้ประกอบด้วย:
- แกนหลัก : ฟังก์ชันหลักและยูทิลิตี้ที่ใช้ร่วมกัน
- ผู้ใช้ : การจัดการผู้ใช้และการรับรองความถูกต้อง
- สินค้า : การจัดการแคตตาล็อกสินค้า
- คำสั่งซื้อ : การประมวลผลและการจัดการคำสั่งซื้อ
- ค้นหา : ความสามารถในการค้นหาขั้นสูง
- Slider : แถบเลื่อน UI แบบไดนามิกสำหรับโปรโมชันและไฮไลท์
- บล็อก : การจัดการเนื้อหาสำหรับโพสต์ในบล็อก
- SEO : เครื่องมือ SEO และการกำหนดค่า
- เคล็ดลับ : เคล็ดลับผู้ใช้และส่วนคำแนะนำ
- VAT : การคำนวณและการจัดการภาษีมูลค่าเพิ่ม
- ประเทศ : การกำหนดค่าเฉพาะประเทศ
- ภูมิภาค : ข้อมูลภูมิภาคและการตั้งค่า
- Pay Way : การกำหนดค่าวิธีการชำระเงิน
- เซสชัน : การจัดการเซสชันผู้ใช้
- รถเข็น : ฟังก์ชั่นตะกร้าสินค้า
- การแจ้งเตือน : กลไกการแจ้งเตือนผู้ใช้
- การรับรองความถูกต้อง : เลเยอร์การรับรองความถูกต้องเพิ่มเติม
- ติดต่อ : ติดต่อเครื่องมือการจัดการและการสื่อสาร
คุณสมบัติ
- การตรวจสอบสิทธิ์และการจัดการผู้ใช้ : บัญชีผู้ใช้และการจัดการเซสชันที่มีประสิทธิภาพยิ่งขึ้น
- การสนับสนุนหลายภาษา : รองรับภาษาต่างๆ เพื่อเพิ่มความสามารถในการใช้งานทั่วโลก
- การค้นหาและการกรองขั้นสูง : ใช้ประโยชน์จากการค้นหาข้อความแบบเต็มของ Postgres เพื่อการดึงข้อมูลที่มีประสิทธิภาพ
- การจัดตารางเวลางาน : ใช้คื่นฉ่ายเพื่อการจัดการงานในเบื้องหลัง
- การเพิ่มประสิทธิภาพประสิทธิภาพ : ใช้กลยุทธ์การแคชเพื่อปรับปรุงการตอบสนองของ API
- การทดสอบ : รวมการทดสอบหน่วยและบูรณาการที่ครอบคลุม
- แผงผู้ดูแลระบบ : แผงผู้ดูแลระบบในตัวของ Django เพื่อการจัดการที่ตรงไปตรงมา
- เอกสาร API : API ที่มีการจัดทำเอกสารอย่างดีโดยใช้ Swagger และ Redoc
- การรวมคอนเทนเนอร์ : การรวม Docker เพื่อการตั้งค่าและการปรับใช้ที่ง่ายขึ้น
เทคโนโลยี
- กรอบงาน : กรอบงาน Django, Django REST
- การรับรองความถูกต้อง : Django Allauth
- ฐานข้อมูล : PostgreSQL
- การจัดการงาน : คื่นฉ่าย
- นายหน้าข้อความ : Redis
- การตั้งค่าเซิร์ฟเวอร์ : Uvicorn (ASGI), Gunicorn (WSGI)
- การบรรจุคอนเทนเนอร์ : นักเทียบท่า
ตั้งค่า
ข้อกำหนดเบื้องต้น
- Python 3.13 หรือสูงกว่า
- จังโก้ 5.0 หรือสูงกว่า
- PostgreSQL
- เรดิส
ใบอนุญาต
โครงการนี้เป็นโอเพ่นซอร์สภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับรายละเอียดเพิ่มเติม
คำสั่ง Docker สำหรับโปรเจ็กต์ Django
การใช้นักเทียบท่าเขียน
การดำเนินงานฐานข้อมูล
- เรียกใช้ DB Migrations :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- ใช้การย้ายข้อมูล :
docker compose run backend sh -c "python manage.py migrate"
การจัดการผู้ใช้
- สร้าง Superuser :
docker compose run backend sh -c "python manage.py createsuperuser"
ไฟล์แบบคงที่
- รวบรวมไฟล์คงที่ :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
การทดสอบและความครอบคลุม
- รันการทดสอบ :
docker compose run backend sh -c "python manage.py test tests/"
- รันการทดสอบด้วยความครอบคลุม (ไม่รวมไฟล์และโฟลเดอร์เฉพาะ):
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"
- สร้างรายงาน HTML ที่ครอบคลุม :
docker compose run backend sh -c "coverage html"
การเพาะข้อมูล
- ฐานข้อมูล Seed ที่มีข้อมูลปลอม :
docker compose run backend sh -c "python manage.py seed_all"
ไฟล์เขียน Docker แบบกำหนดเอง
- รันด้วยไฟล์เขียนเฉพาะ :
docker compose -f <docker-compose-file.yml> up -d --build
การใช้ Docker Exec
คำสั่งทั่วไป
- ดำเนินการคำสั่งในคอนเทนเนอร์ :
docker exec -it <container_id> <command>
- เรียกใช้คำสั่งเชลล์เฉพาะ :
docker exec -it <container_id> sh -c "<command>"
รองรับหลายภาษา
- สร้างข้อความสถานที่ :
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"
- คอมไพล์ข้อความ Locale :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
การกำหนดค่าเพิ่มเติมสำหรับเครื่องมือการพัฒนา
คื่นฉ่าย
การเริ่มต้นบริการคื่นฉ่าย
- เรียกใช้ตัวกำหนดเวลาตี Celery ในพื้นที่ โดยใช้ตัวกำหนดเวลาฐานข้อมูล Django:
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- เรียกใช้ผู้ปฏิบัติงาน Celery :
celery -A core worker -E -l info --pool=solo
- ตรวจสอบคื่นฉ่ายด้วยดอกไม้ :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
ยูวิคอร์น
เรียกใช้แอปพลิเคชัน ASGI
- เริ่ม Uvicorn สำหรับแอปพลิเคชัน ASGI :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
การตั้งค่าการพัฒนา Python และยูทิลิตี้
หลามเวอร์ชัน 3.13.1
การจัดการสภาพแวดล้อมเสมือนจริง
- ติดตั้ง Virtualenv :
pip install virtualenv
- สร้างสภาพแวดล้อมเสมือน :
virtualenv <env_name>
- เปิดใช้งานสภาพแวดล้อมเสมือน :
- Unix/Linux:
source <env_name>/bin/activate
- Windows:
<env_name>Scriptsactivate
- ปิดการใช้งานสภาพแวดล้อมเสมือน :
deactivate
- ข้อกำหนดในการติดตั้ง :
pip install -r requirements.txt
- ติดตั้งข้อกำหนดเฉพาะสภาพแวดล้อม :
pip install -r requirements/<env_name>.txt
คำสั่งจังโก้
- ติดตั้ง Django :
pip install django
- เริ่มโครงการใหม่ :
django-admin startproject <project_name>
- เริ่มแอปใหม่ :
python manage.py startapp <app_name>
- การย้ายฐานข้อมูลและการจัดการ :
- ทำการย้ายข้อมูล:
python manage.py makemigrations
- ใช้การย้ายข้อมูล:
python manage.py migrate
- ล้างฐานข้อมูล:
python manage.py sqlflush
- เติมฐานข้อมูลด้วยข้อมูลเริ่มต้น (ตัวอย่างโรงงานเดียว):
python manage.py factory_seed --model="BlogPost" --count="100"
- เติมฐานข้อมูลด้วยข้อมูลเริ่มต้น (ตัวอย่างโรงงานทั้งหมด):
python manage.py seed_all --model-counts="Country=10,Product=100"
- จัดการผู้ใช้ :
- สร้าง superuser:
python manage.py createsuperuser
- จัดการไฟล์คงที่ :
python manage.py collectstatic
- การทดสอบและการดีบัก :
- รันการทดสอบ:
python manage.py test
- เข้าถึงเชลล์ Django:
python manage.py shell
- เชลล์ที่ได้รับการปรับปรุง:
python manage.py shell_plus
- เชลล์ฐานข้อมูล:
python manage.py dbshell
- รันเซิร์ฟเวอร์การพัฒนา :
python manage.py runserver
การจัดรูปแบบโค้ดและ Linting
- ไปที่ Source Directory :
cd src
- การกระทำล่วงหน้าและการจัดรูปแบบสีดำ :
- ติดตั้ง hooks ล่วงหน้า:
pre-commit install
- รัน hooks ที่คอมมิตล่วงหน้า:
pre-commit run --all-files
- จัดรูปแบบโค้ดด้วย Black:
black .
บทกวีเพื่อการจัดการการพึ่งพา
- ติดตั้ง Poetry : Unix/Linux:
curl -sSL https://install.python-poetry.org | python3 -
Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- จัดการโครงการและการพึ่งพา :
- สร้างโครงการใหม่:
poetry new <project_name>
- ติดตั้งการพึ่งพา:
poetry install
- เพิ่มหรือลบการพึ่งพา:
poetry add <dependency_name>
และ poetry remove <dependency_name>
- อัปเดตไฟล์การขึ้นต่อกันหรือล็อคเฉพาะ:
poetry update <dependency_name>
และ poetry lock
- เรียกใช้สคริปต์:
poetry run <script_name>
- เข้าสู่เชลล์สภาพแวดล้อมเสมือน:
poetry shell
วิธีอัปเกรด pip อัตโนมัติตามข้อกำหนด.txt
- ใช้ pip-upgrader :
- เรียกใช้ pip-upgrader :
pip-upgrade
สตรอเบอร์รี่ GraphQL
- ติดตั้ง Strawberry :
pip install strawberry-graphql
- เรียกใช้เซิร์ฟเวอร์สตรอเบอร์รี่ :
strawberry server
- รันด้วย Project Schema :
strawberry server core.graphql.schema:schema
Django REST Framework - งดงามมาก
- สร้าง API Schema :
python manage.py spectacular --color --file schema.yml
การใช้คำสั่ง Git
การจัดการแท็ก
การลบแท็ก
ลบแท็กระยะไกล :
- ลบแท็กระยะไกลทั้งหมด:
git tag -l | xargs -n 1 git push --delete origin
ลบแท็กท้องถิ่น :
- ลบแท็กในเครื่องทั้งหมด:
git tag -l | xargs git tag -d