Django मा, request लाई WSGI/ASGI handler ले सम्हाल्छ, middleware को एउटा stack ले बेर्छ, URL resolver ले एउटा view मा route गर्छ, र यो एउटा HttpResponse मा परिणत हुन्छ जुन त्यही middleware बाट उल्टो क्रममा फर्केर बाहिर बग्छ।
Django मा, request लाई WSGI/ASGI handler ले सम्हाल्छ, middleware को एउटा stack ले बेर्छ, URL resolver ले एउटा view मा route गर्छ, र यो एउटा HttpResponse मा परिणत हुन्छ जुन त्यही middleware बाट उल्टो क्रममा फर्केर बाहिर बग्छ।
Web server ──▶ WSGI/ASGI handler (HttpRequest बनाउँछ)
▼
Middleware — request phase (माथि → तल: get_response अघि __call__)
▼
URL resolver (urls.py) ── path मिलाउँछ → view + kwargs
▼
Middleware — process_view hook
▼
View (function / class-based) ── तपाईंको logic, HttpResponse फर्काउँछ
▼
Middleware — response phase (तल → माथि: get_response पछि)
▼
HttpResponse ──▶ client
HttpRequest बनाउँछ।get_response() अघि को code माथिबाट तलसम्म चल्छ (SecurityMiddleware, SessionMiddleware, AuthenticationMiddleware, CSRF, …)। तीमध्ये कुनैले पनि short-circuit गरेर छिट्टै response फर्काउन सक्छ।ROOT_URLCONF का pattern हरू path सँग मिलाइन्छ र view छान्न तथा kwargs capture गर्न प्रयोग हुन्छ।process_view — view call हुनुभन्दा ठीक अघि चल्ने middleware hook।HttpResponse फर्काउँछ। Exception ले process_exception trigger गर्छ।get_response() पछि को code तलबाट माथिसम्म चल्छ, जसले middleware लाई बाहिर जाने response (headers, compression) परिमार्जन गर्न दिन्छ।HttpResponse server र client तर्फ stream भएर फर्किन्छ।# middleware.py
class TimingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request): # 2. request phase (अघि)
request.started = time.monotonic()
response = self.get_response(request) # अर्को layer / view call गर्छ
response["X-Time"] = "..." # 6. response phase (पछि)
return response
# urls.py → 3. routing
urlpatterns = [path("items/<int:pk>/", views.item_detail)]
# views.py → 5. view
def item_detail(request, pk):
return render(request, "item.html", {"item": Item.objects.get(pk=pk)})
Django को request/response cycle middleware-केन्द्रित छ, त्यसैले धेरैजसो cross-cutting behavior — auth, sessions, CSRF, security headers, caching — क्रमबद्ध middleware को रूपमा लागू गरिन्छ। request-phase code माथिबाट तल चल्छ र response-phase code तलबाट माथि चल्छ (र MIDDLEWARE मा क्रमले फरक पार्छ) भनेर बुझ्नु तपाईंको आफ्नै middleware सही ठाउँमा राख्न, तपाईंको view अघि नै किन 403/redirect हुन्छ भनेर debug गर्न, र प्रत्येक view नछोई कहाँ logic hook गर्ने भन्ने थाहा पाउन आवश्यक छ।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्