1. Le navigateur analyse l'url saisie
2 Trouve l'adresse IP correspondant à l'url
3. Accédez à notre serveur via l'adresse IP
a . La requête entre dans le serveur wsgi (j'ai omis ici l'éventuel serveur proxy, tel que nginx) b. Le serveur wsgi emballe la requête et la transmet à l'application Django . c. L'application Django est basée sur Le chemin de la requête trouve la fonction de traitement correspondante pour le traitement d. Une fois le traitement terminé, l'application Django renvoie la réponse au serveur wsgi e. Le serveur wsgi conditionne la réponse renvoyée par l'application Django et renvoie la réponse 4. Le serveur renvoie le contenu de la réponse et le navigateur restitue la sortie 2. L'entrée de traitement du Django. application Le service wsgi communique avec l'application Django via le protocole wsgi. Le service wsgi C'est le côté serveur, et l'application Django est l'application Le côté serveur appelle l'application Djano via la fonction application_callable fournie par Django. .Une fois la fonction application_callable traitée, la réponse est renvoyée au serveur django La fonction application_callable se trouve dans le fichier django.core.handlers.wsgi.py. Le serveur traite chaque requête, il appellera la classe WSGIHandler#wsgi.py文件 class WSGIHandler(base.BaseHandler): request_class = WSGIRequest def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_middleware() def __call__(self, environ, start_response): set_script_prefix(get_script_name(environ)) signals.request_started.send(sender=self.__class__, environ=environ) request = self.request_class(environ) response = self.get_response(request) response._handler_class = self.__class__ status = '%d %s' % (response.status_code, response.reason_phrase) response_headers = list(response.items()) for c in response.cookies.values(): response_headers.append(('Set-Cookie', c.output(header=''))) start_response(status, response_headers) if getattr(response, 'file_to_stream', None) is not None and environ.get('wsgi.file_wrapper'): response = environ['wsgi.file_wrapper'](response.file_to_stream) return response
# wsgi.py文件
# wsgi.py文件 def load_middleware(self): ... self._view_middleware = [] self._template_response_middleware = [] self._exception_middleware = [] handler = convert_exception_to_response(self._get_response) for middleware_path in reversed(settings.MIDDLEWARE): middleware = import_string(middleware_path) try: mw_instance = middleware(handler) except MiddlewareNotUsed as exc: ... handler = convert_exception_to_response(mw_instance) self._middleware_chain = handler
< qui est encapsulée par le middleware. Dans la fonction 🎜>
_get_response, la fonction d'affichage à appeler sera d'abord être trouvé selon l'URLdef _get_response(self, request): response = None if hasattr(request, 'urlconf'): urlconf = request.urlconf set_urlconf(urlconf) resolver = get_resolver(urlconf) else: resolver = get_resolver() resolver_match = resolver.resolve(request.path_info) callback, callback_args, callback_kwargs = resolver_match request.resolver_match = resolver_match ... if response is None: wrapped_callback = self.make_view_atomic(callback) try: response = wrapped_callback(request, *callback_args, **callback_kwargs) except Exception as e: response = self.process_exception_by_middleware(e, request) ... return response
, puis la fonction d'affichage réponse = enveloppé_callback(request, * callback_args, **callback_kwargs)Renvoyer la réponse (Certains middlewares seront également appelés dans _get_response)À ce stade, la réponse est renvoyée au serveur et l'ensemble du processus de demande est terminé
Quatre, Résumé
[Cours recommandé :
Tutoriel vidéo DjangoCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!