middleware va controllerlar o‘rtasidagi bog‘liqlik

PPTX 16 стр. 493,3 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 16
middleware va controllerlar o‘rtasidagi bog‘liqlik django'da middleware va controllerlar (views) o‘rtasidagi bog‘liqlikni tushunish, ilovaning qanday ishlashini chuqurroq anglashga yordam beradi. quyida bu mavzuni batafsil va tushunarli tarzda ko‘rib chiqamiz. middleware — bu django ilovasining so‘rov (request) va javob (response) jarayonlariga aralashadigan komponentlar to‘plamidir. har bir middleware komponenti ma'lum bir vazifani bajaradi, masalan, foydalanuvchini autentifikatsiya qilish, xavfsizlikni ta'minlash yoki so‘rov/javob ma'lumotlarini o‘zgartirish. middleware'lar settings.py faylida middleware ro‘yxatida belgilanadi. so‘rovlar bu ro‘yxatdagi middleware'lar orqali yuqoridan pastga qarab o'tadi, javoblar esa pastdan yuqoriga qarab qaytadi. middleware'ning asosiy metodlari: __init__(get_response): middleware sinfi yaratilganda bir marta chaqiriladi. bu yerda kerakli boshlang'ich sozlamalarni amalga oshirish mumkin. 2. __call__(self, request): har bir so‘rovda chaqiriladi. bu metodda so‘rovni qayta ishlash va javobni olish mumkin. 3. process_request(request): so‘rov view funksiyasiga yetib borishidan oldin chaqiriladi. agar httpresponse obyektini qaytarsa, keyingi middleware'lar va view chaqirilmaydi. 4. process_view(request, view_func, view_args, view_kwargs): django qaysi view funksiyasini chaqirishni aniqlaganidan keyin, lekin chaqirishdan oldin ishga …
2 / 16
se obyektini qaytargan bo‘lsa, bu metod chaqiriladi. bu yerda shablon nomini yoki kontekst ma'lumotlarini o‘zgartirish mumkin. controller (view) dan oldin va keyin ma’lumotlarni qayta ishlash django'da foydalanuvchidan kelgan so‘rov (request) avval middleware qatlamlari orqali o‘tadi, shundan keyin view (ya’ni controller) chaqiriladi. view ishlagach, qaytgan javob (response) yana middleware’lardan o‘tib, foydalanuvchiga yuboriladi. demak, middleware view’ga oldin ham, keyin ham aralasha oladi. viewdan oldin ma’lumotlarni qayta ishlash bu bosqichda middleware quyidagi ishlarni bajarishi mumkin: - so‘rov haqida log yozish (masalan, foydalanuvchi ip manzili, vaqt) - foydalanuvchini autentifikatsiya qilish (kirgan yoki kirmaganini tekshirish) - kirish huquqini tekshirish (adminmi, oddiy foydalanuvchimi) - caching: so‘rovga nisbatan javob avvaldan mavjud bo‘lsa, view’ni chaqirmay turib, shu javobni yuborish - so‘rov noto‘g‘ri yoki ruxsat etilmagan bo‘lsa, view’ga o‘tmasdan darhol javob qaytarish amaliy misol (autentifikatsiya tekshiruvi): class authcheckmiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if not request.user.is_authenticated: return httpresponse("siz avval tizimga kiring.") response = self.get_response(request) return …
3 / 16
aliy misol (javobga sarlavha qo‘shish): class responseheadermiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) response['x-custom-header'] = 'bu middleware orqali kiritildi' return response bu middleware view funksiyasi javob qaytarganidan so‘ng unga qo‘shimcha sarlavha (x-custom-header) qo‘shyapti. django'da custom controller sinflari yaratish django mvc (model-view-controller) arxitekturasini qo‘llaydi, ammo view bu faqat foydalanuvchi interfeysini taqdim etuvchi qism emas. u, aslida, http so‘rovlari (request) va javoblarini boshqarish, ma'lumotlar bazasidan ma’lumot olish, shablonlar bilan ishlash kabi ko‘plab vazifalarni bajaradi. django'da har bir view uchun maxsus sinf yaratish mumkin. custom controller yaratish — bu django’da o‘zimizga moslashtirilgan, qayta ishlatiladigan va kengaytiriladigan view sinflarini yozish imkonini beradi. bundan tashqari, ko‘p hollarda, bir nechta view’lar bir xil xususiyatlarga ega bo‘lishi mumkin. shunda kodni takrorlamaslik va yaxshilash uchun custom controller sinfidan foydalanish juda foydalidir. 1. o‘ziga xos view sinflarini yozish django’da custom view yaratish uchun biz django.views.view sinfini kengaytiramiz va unda http metodlariga (get, post, …
4 / 16
s_view(), name='custom_greeting'), ] izoh: urls.py faylida `customgreetingview` sinfi `as_view()` metodi yordamida url bilan bog‘lanadi. `as_view()` metodi django tomonidan avtomatik ravishda chaqiriladi. 2. dispatch() metodini qayta yozish dispatch() metodi so‘rovlarni tegishli metodga (masalan, get() yoki post()) yo‘naltiradi. biz uni qayta yozish orqali oldindan tekshiruvlar yoki umumiy funktsiyalarni qo‘shishimiz mumkin. misol: dispatch() metodini qayta yozish: from django.http import httpresponse from django.views import view class customdispatchview(view): # dispatch() metodini qayta yozish def dispatch(self, request, *args, **kwargs): # har bir so‘rovni loglash print(f"request received at {request.path}") # super metodini chaqirib, so‘rovni normal tarzda qayta ishlash return super().dispatch(request, *args, **kwargs) # get so‘rovi uchun javob def get(self, request): return httpresponse("get so'rovi bilan javob.") # post so‘rovi uchun javob def post(self, request): return httpresponse("post so'rovi bilan javob.") izoh: dispatch() metodini qayta yozish orqali biz so‘rovni loglash (ya’ni qaysi url manzilidan kelganini aniqlash)ni amalga oshiryapmiz. `super().dispatch(request, *args, **kwargs)` — bu aslida django’ning default dispatch() metodini chaqiradi, ya’ni …
5 / 16
miy kodni modullashtirish # userloggingmixin - foydalanuvchi faoliyatini loglash uchun mixin class userloggingmixin: # foydalanuvchi faoliyatini loglash uchun metod def log_user_activity(self, request): print(f"foydalanuvchi {request.user} {request.path} manziliga so'rov yubordi.") # customloggingview - foydalanuvchi faoliyatini loglash bilan birga javob qaytaradi class customloggingview(userloggingmixin, view): def get(self, request): # mixin’dan log_user_activity metodini chaqirish self.log_user_activity(request) return httpresponse("logging muvaffaqiyatli amalga oshirildi!") izoh: bu yerda `userloggingmixin` sinfi foydalanuvchi faoliyatini loglashni amalga oshiradi. `customloggingview` esa bu mixin**dan foydalanadi va foydalanuvchi faoliyatini loglab, javob qaytaradi. urls.py from django.urls import path from .views import customloggingview # urlga so‘rov kelganda customloggingview sinfi chaqiriladi urlpatterns = [ path('custom-logging/', customloggingview.as_view(), name='custom_logging'), ] izoh: `customloggingview` sinfi `userloggingmixin` yordamida foydalanuvchi faoliyatini loglaydi va get so‘rovi yuborilganda javob qaytaradi. 4. custom controller sinflarining afzalliklari - kodning qayta ishlatilishi: bir nechta view’lar bir xil kodni ishlatishi mumkin. mixin**lar yordamida umumiy kodni bir joyda to‘plab, qayta ishlatish mumkin. - moslashtirish imkoniyati: `dispatch()` metodini qayta yozish orqali qo‘shimcha funksiyalarni …

Хотите читать дальше?

Скачайте все 16 страниц бесплатно через Telegram.

Скачать полный файл

О "middleware va controllerlar o‘rtasidagi bog‘liqlik"

middleware va controllerlar o‘rtasidagi bog‘liqlik django'da middleware va controllerlar (views) o‘rtasidagi bog‘liqlikni tushunish, ilovaning qanday ishlashini chuqurroq anglashga yordam beradi. quyida bu mavzuni batafsil va tushunarli tarzda ko‘rib chiqamiz. middleware — bu django ilovasining so‘rov (request) va javob (response) jarayonlariga aralashadigan komponentlar to‘plamidir. har bir middleware komponenti ma'lum bir vazifani bajaradi, masalan, foydalanuvchini autentifikatsiya qilish, xavfsizlikni ta'minlash yoki so‘rov/javob ma'lumotlarini o‘zgartirish. middleware'lar settings.py faylida middleware ro‘yxatida belgilanadi. so‘rovlar bu ro‘yxatdagi middleware'lar orqali yuqoridan pastga qarab o'tadi, javoblar esa pastdan yuqoriga qarab qaytadi. middleware'ning asosiy metodlari: __ini...

Этот файл содержит 16 стр. в формате PPTX (493,3 КБ). Чтобы скачать "middleware va controllerlar o‘rtasidagi bog‘liqlik", нажмите кнопку Telegram слева.

Теги: middleware va controllerlar o‘r… PPTX 16 стр. Бесплатная загрузка Telegram