ホームページ >バックエンド開発 >Python チュートリアル >Django の学習体験
Django は、MVC 設計パターンに従う Python Web 開発フレームワークですが、Django では MTV (model-template-views) と呼ばれることがよくあります。モデルはデータ永続層であり、主にエンティティ マッピング、エンティティ関係、およびエンティティのいくつかのメソッドを保存します。テンプレートはプレゼンテーション層であり、主にデータを表示するために使用されます。Django のビュー エンジンはデータを HTML にレンダリングして表示できます。ビューは、Django のモデルとテンプレートの間のブリッジとして機能し、モデルを処理してテンプレートにデータを送信し、テンプレートのリクエストとパラメーターを受け入れ、対応するロジックの完了後にモデルの変更を送信します。
ここでの MTV と .NET MVC は同じ意味を表していると思います。最大の違いは、公式ドキュメントによると、.net ではビューがプレゼンテーション層であるのに対し、Django ではビジネス ロジック層であるということです。意味は単にビューを理解していないだけです。実際には、それはコントローラーとして使用できます。以下、個人的な理解に基づいて Django の構文と機能を紹介します。
1. ビューと URL
Django では、ビューは通常、対応するパッケージに配置される views.py モジュールです。 Views.py には特定の論理関数が含まれており、各関数は 1 つ以上のテンプレートに対応しています。テンプレートとビューの間の接続を確立するには、特定のルーティング メカニズムが必要です。そのため、Django には通常、ルート ディレクトリにルーティング プログラム urls.py があります。 。ルートはパターンによって作成され、正規表現によって記述されるため、ルーティング メカニズムの柔軟性が大幅に向上します。
例:
views.py
def home(request): values = request.META.items() values.sort() return render_to_response('home.html',{"values":values}) urls.py from django.conf.urls.defaults import * urlpatterns = patterns('',('^$',home),)
ここでリクエストパラメータは必須ですが、リクエストにはページのリクエスト情報が含まれている限り、任意の名前を付けることができます。 。 sender_to_response は django.shortcuts にあるため、前に form django.shortcuts import sender_to_response を宣言する必要があります。 request.MATE には、すべてのリクエスト インターフェイス情報とユーザー情報が含まれています。 shor() はリストを小さいものから大きいものへと並べ替えます。戻り値は、home.html テンプレートに値変数を送信することを意味します。 URL のパターンのタプルは通常のガイダンス ルールを追加します。元のアドレスが '^$' に一致するものを除いて、ホームに誘導されます。もちろん、これは、views.py ファイルと urls.py が同じフォルダーにあることを前提としています。そうでない場合は、ホーム名前空間を参照する必要があります。 URL で複数の値を渡したい場合は、('^([^/]+)/([^/]+) /$' のように、渡したい一致する値に括弧を追加できます。 home) を /some/some/ に一致させ、some が処理関数 home に渡されます。対応するホームは、受け入れる適切なパラメータを追加する必要があります。
2. テンプレート
テンプレートは Django でデータを表示する場所で、通常は HTML 形式で Django の処理ロジックを {% %} で記述し、表示する変数を { で記述します。 { }}真ん中。 Django のマスター ページは、任意のドキュメントとして使用できます。使用する場合は、{% block name %}{% endblock %} を使用してブロックを宣言する必要があります。 name%} を呼び出してから、対応するブロックを呼び出します。
3. Model
setting.pyのデータベースディクショナリにデータベースを設定します。構成が完了したら、manage.py startapp を使用してアプリを作成し、モデルに Python コードを記述してエンティティ マッピングを記述します。例:
models.py
class Publisher(models.Model): name = models.CharField(max_length = 30) website = models.URLField() def __unicode__(self): return self.name class Meta: ordering = ['name']
models は、モデルクラスの共通インターフェイスをカプセル化する django.db に含まれています。 CharField() は、max_length、blank、verbose_name などのパラメータを使用して、varchar 型のデータを作成します。最大長、空かどうか、および表示名をそれぞれ示します。 def__unicode__ は、ボックス化後のデフォルトの表示を提供します。この関数が設定されていない場合は、オブジェクト タイプがデフォルトで表示されます。 class Meta は、モデルのデフォルトの並べ替えフィールドを指定します。同時に、Django は外部キー設定インターフェイスも提供します。ここでは book を例に説明します
作成が完了したら、アプリ パッケージへのパスを settings.py 構成ファイルに追加する必要があります。 INSTALL_APPS。
Django は codefirst をサポートしており、manage.py syncdb を使用してデータベースを同期できます。Django は最初に SQL ステートメントを生成し、それを実行する前に、manage.py validate を実行してモデルを確認できます。 manage.py sqlall ブックを実行できます。 save() を使用してデータ挿入を実装するモデル オブジェクトを直接宣言し、objects.filter() を使用して保存および検索することができます。また、削除するオブジェクトに対して delete() を呼び出すことも、削除するモデルに対して delete を呼び出すこともできます。バッチで。同様に、update はオブジェクトに対する単一の変更とモデルに対するバッチの変更を呼び出します。
4. 統合されたサブフレームワーク
django.contrib パッケージにはさまざまな追加機能パッケージがあり、現時点では admin と auth についてのみ知られていますが、唯一の欠点は、管理インターフェイスがわずかであることです。醜い。 Admin は、Django が公式に提供するバックエンド管理プラットフォームです。追加したアプリを管理し、追加、削除、変更、確認などの一般的な機能をすべて統合できます。呼び出しコードも非常に簡単です。urls.py で管理リンクを有効にするだけです。設定ファイルは必要に応じて変更できます。アプリ管理を追加したい場合は、次のコードを追加する必要があります (例として Book を取り上げます):
class Book(models.Model): title = models.CharField(max_length = 100) authors = models.ManyToManyField(Author) #多对多关系 publisher = models.ForeignKey(Publisher) #多对一关系 publication_date = models.DateField(blank = True, null = True)
5. キャッシュメカニズム
個人的には、ウェブサイトにとってキャッシュは非常に重要だと思います。 Django で提供されているキャッシュ方式は、フルサイトキャッシュ構成方式、ビューキャッシュ構成方式、データキャッシュ構成方式の 3 種類に大別されます。関連する構成ファイルを変更するだけです。 memcached など、キャッシュを支援する他のプラグインをインストールすることもできます。