NewsPortal tizimi arxitekturasi, ER diagrammasi va Clean Architecture sozlamalari
10-sinfAdvanced Python Back-end1-hafta · 2-darsNewsPortal ma'lumotlar modeli: Category, Tag, Post va Comment munosabatlari.
Python venv, requirements.txt va Django REST Framework o'rnatish.
src/ va apps/ modulli strukturasi, .env konfiguratsiyasi va sozlamalar.
Mini-TT va foydalanuvchi rollari
Ro'yxatdan o'tmasdan yangiliklar ro'yxatini va maqola matnini o'qish imkoniyati.
Shaxsiy profilga ega bo'lish, maqolalarga izoh yozish va muhokamalarda qatnashish.
Maqolalarni yaratish, tahrirlash, o'chirish (CRUD) va izohlarni moderatsiya qilish.
Jadvallar va ularning relyatsion bog'lanishlari
Kategoriya o'chirilganda postlar o'chib ketmasligi uchun o'chirishni taqiqlaydi.
Maqolalar ota kategoriyasiz qolib ketmaydi.
Post o'chirilganda, unga tegishli barcha izohlar ham birga avtomatik o'chiriladi.
Baza keraksiz qoldiq ma'lumotlardan tozalanadi.
Loyiha izolyatsiyasi va talab qilinadigan kutubxonalar
Har bir loyihaning kutubxona va versiyalar to'qnashuvini oldini oladi
Terminalda ketma-ket bajariladigan buyruqlar
# 1. Virtual muhit yaratish
python3 -m venv venv
# 2. Faollashtirish (macOS / Linux)
source venv/bin/activate
# Windows uchun: venv\Scripts\activate
# 3. Asosiy paketlarni o'rnatish
pip install django djangorestframework python-dotenv psycopg2-binary
# 4. requirements.txt hosil qilish
pip freeze > requirements.txt
Yirik kompaniyalar andozasidagi modulli loyiha strukturasi
Loyiha sozlamalari, URL marshrutlar va WSGI/ASGI fayllari jamlangan boshqaruv markazi.
Domenlar bo'yicha ajratilgan mustaqil ilovalar: news, comments, accounts, common.
Maxfiy kalitlar, baza parollari va muhit o'zgaruvchilari uchun maxsus qatlam.
Maxfiy kalitlar koddan ajratiladi va Git-ga yuklanmaydi
# src/config/settings/base.py
from pathlib import Path
import os
from dotenv import load_dotenv
BASE_DIR = Path(__file__).resolve().parent.parent.parent
load_dotenv(BASE_DIR.parent / ".env")
INSTALLED_APPS = [
# Django standart ilovalari...
"rest_framework", # DRF kutubxonasi
"apps.common",
"apps.news",
"apps.comments",
]
models.Model).
Terminalda python3 -m venv venv va source venv/bin/activate orqali toza muhit ochiladi.
pip install django djangorestframework python-dotenv buyruqlari bilan backend vositalari yuklanadi.
django-admin startproject config src/ qilinib, settings/base.py ga DRF ulanadi.
Bosing va tekshiring
Jadvallar va ular orasidagi bog'lanishlar (1-N, N-N) arxitektura chizmasi.
Bosing va tekshiring
Agar bog'langan postlar bo'lsa, kategoriyani o'chirishga ruxsat bermaydi.
Bosing va tekshiring
Parollar va maxfiy kalitlarni koddan ajratib saqlovchi konfiguratsiya fayli.
Nima uchun Category va Post o'rtasida models.PROTECT qo'yish to'g'ri yondashuv hisoblanadi?
SECRET_KEY yoki parollarni to'g'ridan-to'g'ri settings.py da qoldirish va GitHub-ga yuklash.
.env faylidan foydalaning va .gitignore fayliga .env ni yozib qo'ying.
newsportal papkasini oching va venv virtual muhitini yarating.
django va djangorestframework kutubxonalarini o'rnating, requirements.txt hosil qiling.
.env faylini sozlang va python manage.py migrate orqali dastlabki migratsiyalarni bajaring.
Keyingi darsda: Model, View va Serializerlar yozamiz hamda Routerlar orqali API endpointlarni ochamiz!