Django フレームワークでの URL 設定ガイド

王林
リリース: 2023-06-17 09:33:10
オリジナル
3155 人が閲覧しました

Django は強力な Web アプリケーション フレームワークであり、URL 構成は Django フレームワークの非常に重要な部分です。この記事では、URL 構成の基礎知識と、Django フレームワークでの具体的な実装方法と使用シナリオを紹介します。

1. URL 設定の基礎知識

URL は、Uniform Resource Locator (Uniform Resource Locator) の略で、Web 上のリソースを識別するために使用される唯一のアドレスです。通常、プロトコルで構成されます。ドメイン名とパス。

Django フレームワークでは、URL 構成とは、クライアント要求を対応するビュー関数にバインドするプロセスを指します。クライアントがリクエストを送信すると、Django は URL 設定で定義されたルールに基づいて対応するビュー関数を見つけ、リクエストをこのビュー関数に渡して処理します。したがって、URL 設定の役割は、さまざまなリクエスト パスのさまざまなビュー機能に分散することです。

2. URL 設定の実装方法

Django フレームワークでは、URL 設定は関数ベースのビューとクラスベースのビューの 2 つの方法で実装できます。

  1. 関数ベースのビュー

関数ベースのビューは、リクエスト パスを対応する関数に直接バインドすることを指します。このバインド方法は非常に単純で、コード実装は次のようになります。

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('about/', views.about, name='about'),
    path('contact/', views.contact, name='contact'),
]
ログイン後にコピー

上記のコード実装では、Django フレームワークにパス モジュールをインポートすることで新しい urlpatterns 変数が定義されています。この変数はリストであり、各要素はパスとビュー関数です。 。たとえば、最初の要素は空のパス (つまり、ドメイン名の後にパス情報がない場合) とビュー関数インデックスのバインドを表し、2 番目の要素は /about/ パスとビュー関数 about のバインドを表します。 3 番目の要素は、/contact/ パスがビュー関数 contact にバインドされていることを示します。

  1. クラスベース ビュー

クラスベース ビューは、リクエスト パスを対応するクラス メソッドに直接バインドすることを指します。このバインディング メソッドは、関数ベースのビューと比較されます。ビューはより柔軟で、展開が簡単です。コード実装は次のとおりです:

from django.urls import path
from .views import IndexView, AboutView, ContactView

urlpatterns = [
    path('', IndexView.as_view(), name='index'),
    path('about/', AboutView.as_view(), name='about'),
    path('contact/', ContactView.as_view(), name='contact'),
]
ログイン後にコピー

上記のコード実装では、新しい urlpatterns 変数は、ビュー モジュールの IndexView、AboutView、および ContactView クラスをインポートすることによって定義されています。 , ここで、各要素はすべてパスとクラス ビューの間の対応関係です。たとえば、最初の要素は空のパス (つまり、ドメイン名の後にパス情報がない場合) を IndexView クラス ビューにバインドすることを表し、2 番目の要素は /about/ パスを AboutView クラス ビューにバインドすることを表します。 3 番目の要素は、/contact/ パスが ContactView クラス ビューにバインドされていることを示します。

3. URL 設定の使用シナリオ

URL 設定は通常、次の 2 つの問題を解決するために使用されます:

  1. 配布リクエスト

クライアントがリクエストを送信すると、Django フレームワークは解析のためにリクエストを URL 設定に渡し、その後、リクエストを対応するビュー関数またはクラス メソッドに転送して処理します。 URL 設定はルーターのようなもので、クライアント要求を正しいハンドラー関数にルーティングする役割を果たします。

  1. URL の生成

リクエストの分散に加えて、URL 構成は URL の生成にもよく使用されます。 Django フレームワークでは URL 名を通じて特定の URL パスを参照できるため、この URL 名は対応する URL パスに自動的に変換されます。例:

<a href="{% url 'about' %}">关于我们</a>
ログイン後にコピー

上記のコードでは、テンプレート タグ {% url 'about' %} を通じて 'about' という名前の URL パスを参照します。最終的な効果は、/about の URL パスを生成することです。 /。

4. URL 構成の高度なアプリケーション

Django フレームワークでは、基本的なリクエストの配布と URL 生成に使用されるだけでなく、URL 構成は次の高度なシナリオにも適用できます。

    ##URL パラメータの受け渡し
URL 設定では、 を使用して URL パスの変数タイプと変数名を定義できます。例:

from django.urls import path
from .views import post_detail

urlpatterns = [
    path('post/<int:pk>/', post_detail, name='post_detail'),
]
ログイン後にコピー

上記のコードでは、 を使用して post_detail パスの整数パラメーター pk を定義します。このパラメータはパスの末尾までコロンで区切られ、ビュー関数のパラメータとして渡されます。

    URL 文字マッチング
URL 設定では、正規表現を使用してリクエスト パスの特定の文字と一致させることができます。この方法は非常に柔軟です。例:

from django.urls import re_path
from .views import search

urlpatterns = [
    re_path(r'^search/(?P<keyword>w+)/$', search, name='search'),
]
ログイン後にコピー

上記のコードでは、 re_path メソッドを使用してパス一致ルールを定義します。このルールにはキーワード パラメータが含まれており、文字、数字、アンダースコアを含むパス文字と一致します。

    URL 名前空間
Django フレームワークでは、URL 名前空間は、アプリケーション内の可視性を高めるために 1 つ以上のアプリケーションの URL をグループ化することを指します。例:

from django.urls import path, include
from myapp1.views import index as myapp1_index
from myapp2.views import index as myapp2_index

myapp1_patterns = [
    path('', myapp1_index, name='index'),
]

myapp2_patterns = [
    path('', myapp2_index, name='index'),
]

urlpatterns = [
    path('myapp1/', include((myapp1_patterns, 'myapp1'), namespace='myapp1')),
    path('myapp2/', include((myapp2_patterns, 'myapp2'), namespace='myapp2')),
]
ログイン後にコピー
上記のコードでは、include 関数を使用して各アプリケーションの URL 構成を Django フレームワークに導入し、各アプリケーションの URL 構成の名前空間を設定します。これにより、異なるアプリケーションの URL 間に競合が発生しないことが保証され、テンプレートでの URL 参照も容易になります。

概要

この記事では、Django フレームワークにおける URL 構成の基礎知識、実装方法、高度な応用例を紹介します。読者が Django フレームワークにおける URL 構成をよりよく理解し、より簡単に理解できるようにするのに役立つことを願っています。 URL設定を実際の開発に柔軟に適用できます。

以上がDjango フレームワークでの URL 設定ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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