ホームページ >バックエンド開発 >Python チュートリアル >Python の Django フレームワークについての深い理解
この記事では主に 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'^delete(?P<id1>\d+)/$',views.show_book),
views.py の関数は次のように記述されます:
def show_arg(request,id1): return HttpResponse('show %s'%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 サイトの他の関連記事を参照してください。