Selgitage, kuidas toimub HTTP-päringute töötlemine Django-s.
sobes.tech AI
Vastus AI-lt
Päringutöötlus toimub middleware'i kaudu, seejärel jõuab see URL-i marsruutijani, mis määrab vastava vaate. Vaade töötleb äriloogika ja tagastab HTTP-vastuse, mis samuti läbib middleware'i enne kliendile saatmist.
Peamised etapid:
-
Sissejuhatus rakendusse: Päring võetakse vastu veebiserverilt (näiteks Nginx) ja edastatakse WSGI-serverile (Gunicorn, uWSGI), mis suhtleb Django rakendusega.
-
Middleware: Päring läbib seeriat middleware'id. Iga middleware võib muuta päringut (
process_request), teha toiminguid pärast vaate töötlemist (process_view) või töödelda erandeid (process_exception).# Näide kasutaja middleware'ist def simple_middleware(get_response): def middleware(request): # LOOGIKA ENNE vaate töötlemist print(f"Töötleb päringut {request.path}") response = get_response(request) # LOOGIKA PÄRAST vaate töötlemist print(f"Vastus koos staatusega {response.status_code} saadetud {request.path}") return response return middleware -
URL-i marsruutimine: Django võrdleb päringu URL-i
urls.pyfailis määratletud mustritega. Kui sobiv vaade leitakse (funktsioon või klass):# urls.py näide from django.urls import path from . import views urlpatterns = [ path('articles/<int:article_id>/', views.article_detail), path('about/', views.about_page), ] -
Vaade (View): Vaade saab
HttpRequestobjekti, töötleb päringut (näiteks andmebaasiga suhtlemise kaudu ORM-i kaudu, äriloogika teostamisega) ja loobHttpResponseobjekti.# views.py näide from django.http import HttpResponse from .models import Article def article_detail(request, article_id): try: article = Article.objects.get(pk=article_id) return HttpResponse(f"Artikli detailid: {article.title}") except Article.DoesNotExist: return HttpResponse("Artikkel ei leitud", status=404) def about_page(request): return HttpResponse("Meist leht") -
Middleware (tagasipööre): Objekti
HttpResponseläbib samuti middleware'i seeria tagurpidi. Middleware võib muuta vastust (process_response). -
Vastuse saatmine: WSGI-server saadab HTTP-vastuse kliendile läbi veebiserveri.
Skeem:
Kliendi <-> Veebiserver <-> WSGI-server <-> Middleware (Päring) <-> URL-i marsruutija <-> Vaade <-> ORM / Ärilogika <-> Vaade <-> Middleware (Vastus) <-> WSGI-server <-> Veebiserver <-> Klient