Django ミドルウェアの詳細な紹介
数週間スクリプトを書いてきましたが、今日ようやくWebフレームワークに触れ始めました〜 PythonのWebフレームワークを学ぶには、Djangoがほぼ必須のコースです。 今回は、それをメインに始めます。タスクは、設定にバージョンを追加することです。静的 CSS および JS のパスをレンダリングするときに、「example.v1124.css」などのバージョン番号を添付してから、リクエストリクエストのバージョン番号を削除します。どうしてそれをするの?これを行うと、フロントエンドで出力される静的ファイルへのパスがバージョン番号とともに追加されるため、新しい静的ファイルが開発されると、クライアントはローカル キャッシュを強制的に更新します。この目的のために、まず設定ファイルで設定する必要があります。変更されるたびにバージョン番号を設定から直接読み取れるようにする必要があります。 1. Django ミドルウェアのリクエスト サイクル
からリクエストを送信します。 HttpResponse の内容、このリクエストを Django に渡すプロセスは次のとおりです。
つまり、各リクエストは最初にミドルウェアの process_request 関数を通過します。この関数は None または an を返します。前者が返された場合、処理は続行されます。他のミドルウェアが HttpResponse を返した場合、プロセスは中止され、Web ページに戻ります。


1 class RequestExeute(object): 2 def process_request(self, request): 3 print('process_request') 4 5 def process_view(self, request, callback, callback_args, callback_kwargs): 6 print('process_view') 7 8 def process_exception(self, request, exception): 9 """10 当views函数出错时执行11 :param request: 12 :param exception: 13 :return: 14 """15 print('process_exception')16 17 def process_response(self, request, response):18 """19 必须return HttpResponse20 :param request: 21 :param response: 22 :return: 23 """24 print('process_response')25 return response26 27 def process_template_response(self, request, response):28 """29 视图函数的返回值中,如果有render方法,才被调用30 :param request:31 :param response:32 :return:33 """34 print('process_template_response')35 return response
1.
MIDDLEWARE_CLASSES = ('zqxt.middleware.BlockedIpMiddleware', ...其它的中间件 )


m2.request
m1.view
m2.view
-
m2.response
m1.response
2。バージョン 1.10 以降では
- process_request が HttpResponse オブジェクトを返す場合、現在のミドルウェアの process_response が forward から取得します
1 from django.shortcuts import HttpResponse 2 from django.utils.deprecation import MiddlewareMixin 3 class M1(MiddlewareMixin): 4 def process_request(self, request): 5 print('m1.request') 6 # return HttpResponse('request_m1') 7 8 def process_view(self, request, callback, callback_args, callback_kwargs): 9 print('m1.view')10 # response = callback(request, *callback_args, **callback_kwargs)11 # return response12 13 def process_response(self, request, response):14 print('m1.response')15 return response16 17 def process_exception(self, request, exception):18 print('m1.process_exception')19 return HttpResponse('m1.process_exception')20 21 def process_template_response(self, request, response):22 """23 视图函数的返回值中,如果有render方法,才被调用24 :param request:25 :param response:26 :return:27 """28 print('m1.process_template_response')29 return response30 31 32 class M2(MiddlewareMixin):33 def process_request(self, request):34 print('m2.request')35 36 def process_view(self, request, callback, callback_args, callback_kwargs):37 print('m2.view')38 # response = callback(request, *callback_args, **callback_kwargs)39 # return response40 41 def process_response(self, request, response):42 print('m2.response')43 return response44 45 def process_exception(self, request, exception):46 print('m2.process_exception')47 return HttpResponse('m2.process_exception')48 49 def process_template_response(self, request, response):50 """51 视图函数的返回值中,如果有render方法,才被调用52 :param request:53 :param response:54 :return:55 """56 print('m2.process_template_response')57 return response
M1 の process_request は HttpResponse


m1.response
-
process_view は process_request:
に似ています。 -
m1 process_view は HttpResponse を返します
1 from django.shortcuts import HttpResponse 2 from django.utils.deprecation import MiddlewareMixin 3 class M1(MiddlewareMixin): 4 def process_request(self, request): 5 print('m1.request') 6 return HttpResponse('request_m1') 7 8 def process_view(self, request, callback, callback_args, callback_kwargs): 9 print('m1.view')10 # response = callback(request, *callback_args, **callback_kwargs)11 # return response12 13 def process_response(self, request, response):14 print('m1.response')15 return response16 17 def process_exception(self, request, exception):18 print('m1.process_exception')19 return HttpResponse('m1.process_exception')20 21 def process_template_response(self, request, response):22 """23 视图函数的返回值中,如果有render方法,才被调用24 :param request:25 :param response:26 :return:27 """28 print('m1.process_template_response')29 return response30 31 32 class M2(MiddlewareMixin):33 def process_request(self, request):34 print('m2.request')35 36 def process_view(self, request, callback, callback_args, callback_kwargs):37 print('m2.view')38 # response = callback(request, *callback_args, **callback_kwargs)39 # return response40 41 def process_response(self, request, response):42 print('m2.response')43 return response44 45 def process_exception(self, request, exception):46 print('m2.process_exception')47 return HttpResponse('m2.process_exception')48 49 def process_template_response(self, request, response):50 """51 视图函数的返回值中,如果有render方法,才被调用52 :param request:53 :param response:54 :return:55 """56 print('m2.process_template_response')57 return response58 59 60 # class RequestExeute(object):61 # def process_request(self, request):62 # print('process_request')63 #64 # def process_view(self, request, callback, callback_args, callback_kwargs):65 # print('process_view')66 #67 # def process_exception(self, request, exception):68 # """69 # 当views函数出错时执行70 # :param request:71 # :param exception:72 # :return:73 # """74 # print('process_exception')75 #76 # def process_response(self, request, response):77 # """78 # 必须return HttpResponse79 # :param request:80 # :param response:81 # :return:82 # """83 # print('process_response')84 # return response85 #86 # def process_template_response(self, request, response):87 # """88 # 视图函数的返回值中,如果有render方法,才被调用89 # :param request:90 # :param response:91 # :return:92 # """93 # print('process_template_response')94 # return response
ログイン後にコピー
実行順序:
1 from django.shortcuts import HttpResponse 2 from django.utils.deprecation import MiddlewareMixin 3 class M1(MiddlewareMixin): 4 def process_request(self, request): 5 print('m1.request') 6 # return HttpResponse('request_m1') 7 8 def process_view(self, request, callback, callback_args, callback_kwargs): 9 print('m1.view')10 response = callback(request, *callback_args, **callback_kwargs)11 return response12 13 def process_response(self, request, response):14 print('m1.response')15 return response16 17 def process_exception(self, request, exception):18 print('m1.process_exception')19 return HttpResponse('m1.process_exception')20 21 def process_template_response(self, request, response):22 """23 视图函数的返回值中,如果有render方法,才被调用24 :param request:25 :param response:26 :return:27 """28 print('m1.process_template_response')29 return response30 31 32 class M2(MiddlewareMixin):33 def process_request(self, request):34 print('m2.request')35 36 def process_view(self, request, callback, callback_args, callback_kwargs):37 print('m2.view')38 # response = callback(request, *callback_args, **callback_kwargs)39 # return response40 41 def process_response(self, request, response):42 print('m2.response')43 return response44 45 def process_exception(self, request, exception):46 print('m2.process_exception')47 return HttpResponse('m2.process_exception')48 49 def process_template_response(self, request, response):50 """51 视图函数的返回值中,如果有render方法,才被调用52 :param request:53 :param response:54 :return:55 """56 print('m2.process_template_response')57 return response
以上がDjango ミドルウェアの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Django のバージョンを確認する手順: 1. ターミナルまたはコマンド プロンプト ウィンドウを開きます; 2. Django がインストールされていることを確認します Django がインストールされていない場合は、パッケージ管理ツールを使用してインストールし、 pip install django コマンドを入力します。 3. インストールが完了したら、python -m django --version を使用して Django のバージョンを確認できます。

Django と Flask はどちらも Python Web フレームワークのリーダーであり、それぞれに独自の利点と適用可能なシナリオがあります。この記事では、これら 2 つのフレームワークを比較分析し、具体的なコード例を示します。開発の概要 Django はフル機能の Web フレームワークであり、その主な目的は、複雑な Web アプリケーションを迅速に開発することです。 Django は、ORM (オブジェクト リレーショナル マッピング)、フォーム、認証、管理バックエンドなどの多くの組み込み機能を提供します。これらの機能により、Django は大規模なデータを処理できるようになります。

Django は、Web 開発ライフサイクルのあらゆる側面をカバーする完全な開発フレームワークです。現在、このフレームワークは世界中で最も人気のある Web フレームワークの 1 つです。 Django を使用して独自の Web アプリケーションを構築する場合は、Django フレームワークの長所と短所を理解する必要があります。具体的なコード例も含め、知っておくべきことはすべてここにあります。 Django の利点: 1. 迅速な開発 - Django は Web アプリケーションを迅速に開発できます。豊富なライブラリと内部を提供します。

Django のバージョンを確認する方法: 1. コマンド ラインで確認するには、ターミナルまたはコマンド ライン ウィンドウで「python -m django --version」コマンドを入力します。 2. Python 対話型環境で確認するには、「import django」と入力します。 print(django.get_version())" code; 3. Django プロジェクトの設定ファイルを確認し、インストールされているアプリケーション情報を含む INSTALLED_APPS という名前のリストを見つけます。

Django バージョンをアップグレードする方法: 手順と考慮事項、必要な特定のコード例 はじめに: Django は、より優れたパフォーマンスとより多くの機能を提供するために継続的に更新およびアップグレードされる強力な Python Web フレームワークです。ただし、古いバージョンの Django を使用している開発者にとって、Django のアップグレードはいくつかの課題に直面する可能性があります。この記事では、Djangoのバージョンアップの手順や注意点、具体的なコード例を紹介します。 1. Djan をアップグレードする前にプロジェクト ファイルをバックアップします。

バックエンドは django です。詳細: Django は主にバックエンド フレームワークですが、フロントエンド開発と密接に関連しています。 Django のテンプレート エンジン、静的ファイル管理、RESTful API などの機能を通じて、フロントエンド開発者はバックエンド開発者と協力して、強力でスケーラブルな Web アプリケーションを構築できます。

違いは次のとおりです。 1. Django 1.x シリーズ: これは、バージョン 1.0、1.1、1.2、1.3、1.4、1.5、1.6、1.7、1.8、および 1.9 を含む、Django の初期バージョンです。これらのバージョンは主に基本的な Web 開発機能を提供します; 2. Django 2.x シリーズ: これは、2.0、2.1、2.2 およびその他のバージョンを含む Django の中期バージョンです; 3. Django 3.x シリーズ: これは最新バージョンですDjango シリーズ。バージョン 3.0、3 などを含む。

Django は、迅速な開発とクリーンなメソッドを重視した Python で書かれた Web アプリケーション フレームワークです。 Django は Web フレームワークですが、Django がフロントエンドなのかバックエンドなのかという質問に答えるには、フロントエンドとバックエンドの概念を深く理解する必要があります。フロントエンドはユーザーが直接対話するインターフェイスを指し、バックエンドはサーバー側プログラムを指し、HTTP プロトコルを通じてデータと対話します。フロントエンドとバックエンドが分離されている場合、フロントエンドとバックエンドのプログラムをそれぞれ独立して開発して、ビジネス ロジックとインタラクティブ効果、およびデータ交換を実装できます。
