ホームページ > バックエンド開発 > Python チュートリアル > Django バージョンの進化: 1.x から 3.x へ、新機能と改善点について学びます

Django バージョンの進化: 1.x から 3.x へ、新機能と改善点について学びます

王林
リリース: 2024-01-19 09:46:13
オリジナル
568 人が閲覧しました

Django バージョンの進化: 1.x から 3.x へ、新機能と改善点について学びます

Django は Python で書かれた Web フレームワークであり、その主な特徴は、迅速な開発、容易な拡張、高い再利用性などです。 2005 年に初めてリリースされて以来、Django は強力な Web 開発フレームワークに成長しました。

時間の経過とともに、Django のバージョンは常に更新されます。この記事では、Django のバージョンの進化、1.x から 3.x への変更点を深く理解し、新機能、改善点、注意が必要な変更点を紹介し、詳細なコード例を示します。

  1. Django 1.x バージョン

Django 1.x バージョンは、1.0.1 から 1.11.29 までを含む Django の初期バージョンです。このバージョンの Django には、次のような多くの基本機能がすでに備わっています:

a. データベース操作での ORM の使用

ORM は Django のコア コンポーネントです。これにより、開発者は SQL ステートメントを直接使用せずに、Python コードを使用してデータベースを操作できるようになります。 ORM により、操作がより簡単かつ直感的になります。簡単な例:

from django.db import models

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateTimeField()
    mod_date = models.DateTimeField()
    authors = models.ManyToManyField(Author)
    n_comments = models.IntegerField()
    n_pingbacks = models.IntegerField()
    rating = models.IntegerField()
ログイン後にコピー

上の例では、Blog、Author、Entry という 3 つのデータ モデルを定義しました。これらはすべて models.Model から継承しています。これらのクラスの属性は、データベース テーブルのフィールドに対応します。たとえば、Blog クラスには、name と tagline という 2 つのフィールドがあり、それぞれ文字列型のブログ名とスローガンを格納するために使用されます。データ モデルを定義する際、Django は対応するデータベース テーブル、追加、削除、変更、クエリ操作、および ORM API を自動的に生成します。

b. URL を自動的に管理する

Django 1.x バージョンでは、HTTP リクエストを処理するビュー関数を記述するだけでよく、URL を手動で管理する必要はありません。 Django は、構成された URL ルーティングに基づいて、リクエストを対応するビュー関数に自動的にマップします。例:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
    url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]
ログイン後にコピー

上記の例では、ホームページ、質問詳細ページ、投票結果ページ、投票機能ページを含む 4 つの URL ルートを定義しました。 URL ルートごとに、対応する処理関数を指定します。 Django はリクエストされた URL とルートを自動的に照合することで、URL を自動管理する機能を実現します。

c. 組み込みの管理者バックグラウンド管理システム

Django の管理者バックグラウンド管理システムは、非常に強力な機能です。このバックグラウンド管理システムを通じて、データベースの追加、削除、変更、確認を簡単に行うことができます。 Django 1.x バージョンの管理者バックグラウンド管理システムには、管理サイトの自動生成、データ モデルの管理、カスタマイズされたリスト、フィルター、フォームの表示など、多くの基本機能がすでに備わっています。

  1. Django 2.x バージョン

Django 2.x バージョンには 2.0.0 から 2.2.24 が含まれており、Django にいくつかの大きな改良が加えられています。

a. ASGI の導入

Django 2.x バージョンでは、ASGI (Asynchronous Server Gateway Interface) プロトコルが導入されました。 ASGI は非同期 Web サーバー用に設計されたプロトコルで、開発者はこれを使用して非同期 Web アプリケーションを作成できます。このようにして、WebSocket、リアルタイム通信、時間のかかるタスクなどの非同期プログラミングのニーズをより適切に満たすことができます。

async def application(scope, receive, send):
    assert scope['type'] == 'http'

    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            [b'content-type', b'text/plain'],
        ]
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, world!',
    })
ログイン後にコピー

上記のコード例では、ASGI を使用して単純な Web アプリケーションを作成します。まず、スコープ、受信、送信の 3 つのパラメーターを受け入れるアプリケーションの非同期関数を定義します。これらのパラメータは固定されており、ASGI プロトコルによって合意されています。このうち、スコープはリクエストのタイプ、パス、クエリ文字列などを含むリクエストのコンテキストを表し、受信はリクエストの受信方法、リクエストヘッダー、応答コードなどを表す辞書の構築を表し、送信はリクエストの内容を表します。クライアントに応答を返します。

b. Python 2.x 互換性の削除

Django 2.x バージョンでは、Python 2.x 互換性が削除され、サードパーティ ライブラリの Python はサポートされなくなりました。 .x バージョン。これは、開発者が Django アプリケーションを開発するには Python 3.x を使用する必要があることを意味します。

さらに、Django 2.x バージョンでは、次のような他の改善と最適化も行われています。

  • 新しい HTTP ステータス コードと例外を追加しました。
  • 追加より優れたパスワード セキュリティ メカニズム;
  • より優れたテストをサポートし、新しいテスト フレームワークを導入します。
  1. Django 3.x バージョン

Django 3.x バージョンは、3.0.0 から 3.2.5 までを含む現在の最新バージョンです。バージョン 2.x をベースに機能とパフォーマンスがさらに強化されています。

a. パス パラメーターのサポート

Django 3.x バージョンでは、パス コンバーター、つまりパス パラメーターのサポートが導入されました。この新機能は、RESTful API の開発に非常に役立ち、より柔軟な URL の照合方法を提供できます。

from django.urls import path

def greet(request, name):
    return HttpResponse(f'Hello, {name}!')

urlpatterns = [
    path('greet/<name>/', greet),
    ...
]
ログイン後にコピー

上の例では、パス パラメーター名を定義しました。リクエスト パス内の任意の値を name パラメーターに入力し、ビューの処理時にそのように表すことができます。

b. UnicodeSlugify の置き換え

Django 3.x バージョンでは、UnicodeSlugify はデフォルトの Slugify の置き換えに使用されなくなりました。 UnicodeSlugify は、開発者がより多くの言語と文字セットを使用できるようにするサードパーティ ライブラリです。 UnicodeSlugify の代わりに、より標準化され、よりローカライズされ、より包括的で、よりスケーラブルで、より安全な新しい Slugify アルゴリズムが Django 用に設計されました。

c. データベース クエリの最適化

Django 3.x バージョンでは、データベース クエリ方法がさらに最適化されています。たとえば、アプリケーションが起動すると、Django はすべてのデータベース クエリのメタデータをキャッシュします。これにより、テーブル構造の検索回数が減り、アプリケーションの応答速度が向上します。

さらに、Django 3.x バージョンでは、次のような他の多くの新機能と改善点も追加されています。

  • 複数の読み取りデータベースをサポートする新しいミドルウェア;
  • 大幅にクエリ プランの生成を最適化します;
  • 動的に変更される集計およびグループ化クエリのサポートを追加しました;
  • 非同期電子メールと HTTP リクエストのサポートを追加しました;

この記事の概要Django1.x から Django 3.x への進化の変化について説明します。これらの変更により、パフォーマンスが向上し、開発効率が向上し、使いやすさが向上します。 MVC フレームワークとして、Django はますます完成度が高まっていくと思います。

以上がDjango バージョンの進化: 1.x から 3.x へ、新機能と改善点について学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート