Izskaidrojiet, kā notiek HTTP pieprasījumu apstrāde Django.
sobes.tech AI
Atbilde no AI
Pieprasījuma apstrāde notiek caur middleware, pēc tam tas nonāk URL maršrutētājā, kas nosaka atbilstošo skatu. Skats apstrādā biznesa loģiku un atgriež HTTP atbildi, kas arī cauriet caur middleware pirms nosūtīšanas klientam.
Galvenie posmi:
-
Ieeja programmā: Pieprasījumu pieņem tīmekļa serveris (piemēram, Nginx) un nodod to WSGI serverim (Gunicorn, uWSGI), kas sadarbojas ar Django lietotni.
-
Middleware: Pieprasījums iet caur virkni middleware. Katrs middleware var modificēt pieprasījumu (
process_request), veikt darbības pēc skata apstrādes (process_view) vai apstrādāt izņēmumus (process_exception).# Piemērs lietotāja middleware def simple_middleware(get_response): def middleware(request): # LOGIKA PIRMS skata apstrādes print(f"Apstrādā pieprasījumu {request.path}") response = get_response(request) # LOGIKA PĒC skata apstrādes print(f"Atbilde ar statusu {response.status_code} nosūtīta {request.path}") return response return middleware -
URL maršrutēšana: Django salīdzina pieprasījuma URL ar
urls.pyfailā definētajiem modeļiem. Atrodot atbilstošo skatu (funkciju vai klasi):# urls.py piemērs from django.urls import path from . import views urlpatterns = [ path('articles/<int:article_id>/', views.article_detail), path('about/', views.about_page), ] -
Skats (View): Skats saņem
HttpRequestobjektu, apstrādā pieprasījumu (piemēram, ar ORM saistītu ar datu bāzi, veic biznesa loģiku) un veidoHttpResponseobjektu.# views.py piemērs 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"Raksta detaļas: {article.title}") except Article.DoesNotExist: return HttpResponse("Raksts nav atrasts", status=404) def about_page(request): return HttpResponse("Par mums") -
Middleware (atpakaļgaitas): Objekts
HttpResponsearī iet caur middleware secību atpakaļgaitā. Middleware var modificēt atbildi (process_response). -
Atbildes nosūtīšana: WSGI serveris nosūta HTTP atbildi klientam caur tīmekļa serveri.
Shēma:
Klients <-> Tīmekļa serveris <-> WSGI serveris <-> Middleware (Pieprasījums) <-> URL maršrutētājs <-> Skats <-> ORM / Biznesa loģika <-> Skats <-> Middleware (Atbilde) <-> WSGI serveris <-> Tīmekļa serveris <-> Klients