ホームページ  >  記事  >  バックエンド開発  >  Python の Django フレームワークについての深い理解

Python の Django フレームワークについての深い理解

零到壹度
零到壹度オリジナル
2018-04-03 16:21:021674ブラウズ

この記事では主に Django フレームワークを実装するための Python コードを紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして一緒に見てみましょう

1. URLconf

ユーザーがブラウザーから URL にアクセスして Web サイトをリクエストすると、URL を通じて対応する関数が見つかり、実行されます。Django の URL はフォルダー

1、configuration

(1)、test1/settings.py 内のプロジェクトと同じ名前のファイル Configuration ファイル

settings.py は、デフォルトで ROOT_URLCONF を介して URL 構成を指定しています。 test1 .py ファイルの下の URL:


(2)、test1/urls.py の設定項目は次のとおりです:


注:

test1/ で包含設定を実行します。 urls.py を作成し、それぞれのアプリケーションで使用します。 対応する urls.py を作成し、各アプリケーションの urls.py ファイルに特定の構成を作成します。

urlpartterns リストを定義し、url() オブジェクトを保存します。このリストの名前は固定です。

2. URL 定義

url() オブジェクトの構文は django.conf.urls パッケージで定義されており、2 つの構文構造で構成されます

(1): 同じ名前のフォルダー内の URL が含まれます。プロジェクトの py には他のアプリケーションの urls.py が含まれています

カスタマイズしたアプリケーションで urls.py ファイルを作成して url() を定義し、カスタマイズした urls.py を同じ名前のフォルダー内の urls.py に導入します。この目的は、データがより明確で保守しやすいように、アプリケーション内で urls.py を構成することです。

booktest/urls.pyの構文をtest1/urls.pyに導入します

url(r'^',include('应用名称.urls')),
# 此处的urls指的是各自应用(booktest)中urls.py文件的名称,如果是urls.py,即为urls

(2)、構文2:定義、URLとビュー関数の対応関係を指定します

それぞれのアプリケーション内でurls.pyを作成し、指定しますリクエストアドレス ビューとの対応関係、形式は以下の通り:

url(正则,'视图函数名称')

例:

booktest/urls.py にホームページの URL を作成:

from django.conf.urls import url
from booktest import views
urlpatterns=[
    url(r'^$',views.index),
]

注: 通常の引数では r を使用することをお勧めします。これは、文字列がエスケープされないことを意味するため、正規表現を使用するときに記述する必要があるのは 1 つだけです。 バックスラッシュを先頭に追加することはできません。バックスラッシュを末尾に追加してもしなくてもブラウザの URL は同じになるため、末尾にバックスラッシュを追加することをお勧めします。

3. URL に含まれるパラメータ値を取得します

リクエストされた URL は通常の Python 文字列とみなされ、ドメイン名、get、post を含まないリクエスト パラメータが照合されます。例: リクエスト アドレスは次のようになります。

http://localhost:8080/detail/1?a=10

上記のリクエストアドレスでは、url()関数の正規表現に一致する文字列は、detail/

のみです。リクエストされた URL で RESTFUL スタイルを伝えたい パラメータは、url() 関数の正規表現で、つまり () 記号を使用してグループ化する必要があります。位置パラメータとキーワード パラメータに分割されます。

注: 2 つのパラメータ メソッドを混合しないでください。正規表現では 1 つのパラメータ メソッドのみを使用できます。

(1)、位置パラメータ

() 記号を直接使用し、位置パラメータを通じてビューに渡します

url() 関数の正規表現は次のように記述されます:

url(r'^detail(\d+)/$',views.show_books),

ビュー内の対応する関数。 py は次のように記述されます:

def show_books(request, id):    # 此处获取的id为1
    return HttpResponse('show_books')

(2), キーワード パラメータ

キーワード パラメータを使用し、url() 関数の正規表現でグループ化して各グループに名前を付けます

たとえば、アクセスされる URL は次のとおりです: http:// localhost: 8000/delete/1?a=10

url() 関数の正規表現は次のように記述されます:

url(r&#39;^delete(?P<id1>\d+)/$&#39;,views.show_book),

views.py の関数は次のように記述されます:

def show_arg(request,id1):
    return HttpResponse(&#39;show %s&#39;%id1)

:キーワード パラメーターを使用する場合 その場合、views.py 内の対応する関数のパラメーター名は、正規表現内のグループの名前と一致している必要があります。そうでない場合は、エラーが報告されます。

2. ビュー

1. ビューとは

ビューは Python の関数であり、通常、「application/views.py」ファイル (この例では「booktest/views.py」) で定義されます。例。

ビューは、応答として HttpResponse オブジェクトまたはサブオブジェクトを返さなければなりません。応答には、Web ページの HTML コンテンツ、リダイレクト関数、404 エラーなどが考えられます。ビューの最初のパラメーターは HTTPREQUEST オブジェクトである必要があります。他のパラメーターには、キーワード パラメーターまたは位置パラメーター (2 つのうちの 1 つ)

2、組み込みエラー ビュー (1)、組み込みエラー ビュー マップ

も含まれる場合があります。

デバッグ情報の代わりにエラー ビューを表示したい場合は、テスト内の「DEBUG 項目構成情報」を変更する必要があります。 /settings.py」ファイル


(2)、404错误及视图

        将请求地址进行url匹配之后,没有找到匹配的正则表达式,则调用404视图,这个视图会调用404.html模版进行渲染,视图传递变量request_path给模版,表示导致错误的URL。

在templates中创建404.html

<html>
<head>
    <title></title>
</head>
<body>
找不到了
<hr/>
{{request_path}}
</body>
</html>

在浏览器中输入如下网址:

http://localhost:8000/test/

运行效果如下:


(3)、500错误及视图

        在视图中代码运行报错将会发生500错误,调用内置错误视图,使用templates/500.html模版进行渲染。

三、HttpRequest对象

1、HttpRequest对象

        服务器接收到HTTP请求后,会根据报文创建HttpRequest对象,这个对象不需要我们手动创建,直接使用服务器构建好的对象即可。视图函数中的第一个参数必须是HttpRequest对象,该对象类定义在django.http模块中。

2、属性

        path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。

        method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。

                在浏览器中给出地址发出请求采用get方式,如超链接。

                

                在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求。

        encoding:一个字符串,表示提交的数据的编码方式。

                如果为None则表示使用浏览器的默认设置,一般为utf-8。

                这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。

        GET:QueryDict类型对象,类似于字典,包含get请求方式的所有参数。

        POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数。

        FILES:一个类似于字典的对象,包含所有的上传文件。

        COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。

        session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。