Middle
Ներկայացրեք, թե ինչպես է տեղի ունենում HTTP հարցումների մշակումը Django-ում։
sobes.tech AI
Պատասխան AI-ից
HTTP հարցման մշակումը Django-ում ներառում է մի քանի հիմնական փուլեր:
- WSGI սերվեր: Հարցումը գալիս է WSGI սերվերին (օրինակ՝ Gunicorn, uWSGI), որը հանդիսանում է ստանդարտ ինտերֆեյսը վեբ սերվերների և Python վեբ հավելվածների միջև:
wsgi.py: WSGI սերվերը փոխանցում է հարցումը Django հավելվածինwsgi.pyֆայլի միջոցով, որը սովորաբար գտնվում է նախագծի հիմնական թղթապանակում: Այս ֆայլը պարունակում է WSGI օբյեկտը:# wsgi.py import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your_project>.settings') application = get_wsgi_application() # WSGI օբյեկտը- Middleware: Հարցումը անցնում է կարգավորած middleware շղթայով: Middleware-ն ծրագրային շերտ է, որը մշակում է հարցումները և պատասխանները: Նրանք կարող են իրականացնել նույնականացում, սեսիայի կառավարում, գլխագրերի մշակում և այլ գործառույթներ:
# settings.py MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', # Ձեր անհատական middleware-ները ] - URL լուծող (
urls.py): Միջանցքից անցնելուց հետո Django որոշում է, թե որ View-ն պետք է մշակի հարցումը՝ հիմնվելովurls.pyֆայլում սահմանված URL ձևանմուշների վրա:# urls.py (ծրագրման մակարդակ) from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('my_app/', include('<my_app>.urls')), # հավելվածի URL-ների ներառում ]# urls.py (հավելվածի մակարդակ) from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('item/<int:item_id>/', views.detail, name='detail'), ] - View: Հետ գտած URL ձևանմուշը կապված է որոշակի ֆունկցիայի կամ class-based View-ի հետ: View-ֆունկցիան (կամ class-based View մեթոդը) ընդունում է
HttpRequestօբյեկտը որպես արգումենտ և պարունակում է հարցման մշակման տրամաբանությունը:# views.py from django.shortcuts import render, get_object_or_400 from .models import Item def index(request): items = Item.objects.all() return render(request, 'my_app/index.html', {'items': items}) def detail(request, item_id): item = get_object_or_400(Item, pk=item_id) return render(request, 'my_app/detail.html', {'item': item}) - Մոդել (ընտրովի): View-ը կարող է փոխգործակցել մոդելների հետ (Django ORM-ի API-ն) տվյալների ստացման կամ պահպանման համար:
# models.py from django.db import models class Item(models.Model): name = models.CharField(max_length=100) description = models.TextField() def __str__(self): return self.name - Շաբլոն (ընտրովի): View-ը կարող է օգտագործել Django շաբլոնները HTML պատասխան ստեղծելու համար:
<!-- my_app/templates/my_app/index.html --> <h1>Items</h1> <ul> {% for item in items %} <li><a href="{% url 'detail' item.id %}">{{ item.name }}</a></li> {% endfor %} </ul> - Պատասխան: View-ը վերադարձնում է
HttpResponseօբյեկտ կամ նրա ենթակլասը (օրինակ՝JsonResponse,RedirectResponse): Այս օբյեկտը պարունակում է պատասխանին մարմինը և կապված գլխագրերը: - Middleware (վերադարձ շղթա):
HttpResponseօբյեկտը անցնում է հակառակ շղթայով նույն middleware-ներով, որոնք մշակել են հարցումը: Middleware-ները կարող են փոփոխել պատասխանը նախքան այն ուղարկելը հաճախորդին: - WSGI սերվեր: Վերջնական պատասխանն ուղարկվում է WSGI սերվերին հաճախորդին։