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

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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?Apr 02, 2025 am 07:09 AM

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。