Ներկայացրեք, թե ինչպես է տեղի ունենում HTTP հարցումների մշակումը Django-ում.
sobes.tech AI
Պատասխան AI-ից
Հարցի մշակումը անցնում է միջնորդով, ապա այն փոխանցվում է URL-մարշրութային համակարգին, որը որոշում է համապատասխան ներկայացումը: Ներկայացումը մշակում է բիզնես տրամաբանությունը և վերադարձնում HTTP պատասխան, որը նույնպես անցնում է միջնորդով նախքան այն ուղարկելը հաճախորդին:
Հիմնական փուլերը՝
-
Ներմուծում ծրագրում: Հարցը ընդունվում է վեբ սերվերից (օրինակ՝ Nginx) և փոխանցվում է WSGI սերվերին (Gunicorn, uWSGI), որը հաղորդակցվում է Django ծրագրի հետ:
-
Միջնորդ: Հարցը անցնում է միջնորդների շարք: Յուրաքանչյուր միջնորդ կարող է փոփոխել հարցը (
process_request), կատարել գործողություններ ներկայացման մշակման հետո (process_view) կամ մշակել արտահայտություններ (process_exception):# Օրինակ օգտագործողի միջնորդ def simple_middleware(get_response): def middleware(request): # Լոգիկա Նախ ներկայացման մշակման print(f"Մշակվում է հարցը {request.path} համար") response = get_response(request) # Լոգիկա Պոստ ներկայացման մշակման print(f"Պատասխան {response.status_code} կարգավիճակով ուղարկված {request.path} համար") return response return middleware -
URL մարշրութային համակարգ: Django համեմատում է հարցի URL-ը
urls.pyֆայլում սահմանված ձևանմուշների հետ: Համապատասխան ներկայացումը գտնելու համար:# urls.py օրինակ from django.urls import path from . import views urlpatterns = [ path('articles/<int:article_id>/', views.article_detail), path('about/', views.about_page), ] -
Ներկայացում (View): Ներկայացումը ստանում է
HttpRequestօբյեկտը, մշակել հարցը (օրինակ՝ տվյալների բազայի հետ փոխազդեցությամբ, բիզնես տրամաբանության իրականացման միջոցով) և ձևավորումHttpResponseօբյեկտ:# views.py օրինակ 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"Հոդվածի մանրամասները: {article.title}") except Article.DoesNotExist: return HttpResponse("Հոդվածը չի գտնվել", status=404) def about_page(request): return HttpResponse("Մեր մասին էջ") -
Միջնորդ (հետադարձ անցում):
HttpResponseօբյեկտը նույնպես անցնում է միջնորդների շարք հակառակ հերթականությամբ: Միջնորդը կարող է փոփոխել պատասխանն (process_response): -
Պատասխան ուղարկում: WSGI սերվերը ուղարկում է HTTP պատասխան հաճախորդին՝ վեբ սերվերի միջոցով:
Սխեմատիկ:
Հաճախորդ <-> Վեբ սերվեր <-> WSGI սերվեր <-> Միջնորդ (Հարց) <-> URL մարշրութային համակարգ <-> Ներկայացում <-> ORM / Բիզնես տրամաբանություն <-> Ներկայացում <-> Միջնորդ (Պատասխան) <-> WSGI սերվեր <-> Վեբ սերվեր <-> Հաճախորդ