djangoビュー(FBVとCBV)
目次:単純なビュー関数 FBVとCBV requestオブジェクトとresponseオブジェクト JsonResponseオブジェクト 単純なビュー関数
ビュー関数(クラス)は、Webリクエストを受け入れ、Web応答を返す簡単なPython関数(クラス)です.応答は、ウェブページのHTMLコンテンツ、リダイレクト、404エラー、XMLドキュメント、または画像であってもよい.ビュー自体にどんな論理が含まれているかにかかわらず、応答を返します.コードが現在のプロジェクトディレクトリの下にある限り、どこに書いても構いません.それ以外に要求はない--「不思議なところはない」と言える.コードをどこかに置くために、プロジェクトディレクトリまたはアプリケーションディレクトリにビューを配置するviewsという俗称がある.pyのファイルにあります.
次に、HTMLドキュメントの形式で現在の日付と時刻を返すビュー関数を示します.
作成プロセス:まずdjangoからhttpモジュールにはHttpResponseクラスとPythonのdatetimeライブラリがインポートされています. 次にcurrent_を定義しますdatetime関数.これがビュー関数です.各ビュー関数は、HttpRequestオブジェクトを最初のパラメータとして使用し、通常はrequestと呼ばれます.ビュー関数の名前は重要ではありません.Djangoが認識できるように、統一的なネーミング方法でネーミングする必要はありません.current_と名付けましたDatetimeは、この名前が実装された機能を比較的正確に反映できるためです. このビューは、生成された応答を含むHttpResponseオブジェクトを返します.各ビュー関数は、HttpResponseオブジェクトを返す責任を負います.
Djangoは,リクエストと応答オブジェクトを用いてシステムを介して状態を伝達する.ブラウザがサービス側にページを要求すると、Djangoは要求に関するメタデータを含むHttpRequestオブジェクトを作成します.その後、Djangoは対応するビューをロードし、このHttpRequestオブジェクトを最初のパラメータとしてビュー関数に渡します.各ビューは、HttpResponseオブジェクトを返します.
カタログに戻る
FBVとCBV
FBV function based views関数ベースのビューCBV class based viewsクラスベースのビューCBVとFBVルーティングの本質はurl+関数メモリアドレスです
FBV
CBV
注意:
CBVを使用する場合urls.pyでも対応する修正を行います.
カタログに戻る
requestオブジェクトとresponseオブジェクト
requestオブジェクト
ページが要求されると、Djangoは、今回の要求元の情報を含むHttpRequestオブジェクトを作成します.Djangoはこのオブジェクトを応答のビュー関数に自動的に渡し、一般的にビュー関数はrequestパラメータを使用してこのオブジェクトを受け取ることになる.
共通プロパティ path_infoは、ドメイン名 を除くユーザーアクセスurlを返します. methodリクエストで使用されるHTTPメソッドの文字列表示、全大文字表示. GETすべてのHTTP GETパラメータを含むクラス辞書オブジェクト POSTは、すべてのHTTP POSTパラメータを含むクラス辞書オブジェクト を含む. body要求体、byteタイプrequest.POSTのデータはbodyから抽出した である.
公式ドキュメント:https://docs.djangoproject.com/en/1.11/ref/request-response/
responseオブジェクト
各ビューは、HttpResponseをインスタンス化し、塗りつぶし、返す必要があります.HttpResponseクラスはdjangoにある.httpモジュールではshortcutsからインポートすることもできます
例:文字列を渡す
レスポンスヘッダ情報の設定または削除
共通プロパティ HttpResponse.content:レスポンスコンテンツ HttpResponse.charset:応答コンテンツの符号化 HttpResponse.status_code:応答のステータスコード 公式ドキュメント:https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpResponse
カタログに戻る
JsonResponseオブジェクト
JsonResponseはHttpResponseのサブクラスであり、JSON符号化の応答を生成するのに特化している.
例:
注:デフォルトでは辞書タイプのみが渡されます.非辞書タイプを渡すにはsafeキーワードパラメータを設定する必要があります.
json形式のデータ種に中国語がある場合、
カタログに戻る
ビュー関数(クラス)は、Webリクエストを受け入れ、Web応答を返す簡単なPython関数(クラス)です.応答は、ウェブページのHTMLコンテンツ、リダイレクト、404エラー、XMLドキュメント、または画像であってもよい.ビュー自体にどんな論理が含まれているかにかかわらず、応答を返します.コードが現在のプロジェクトディレクトリの下にある限り、どこに書いても構いません.それ以外に要求はない--「不思議なところはない」と言える.コードをどこかに置くために、プロジェクトディレクトリまたはアプリケーションディレクトリにビューを配置するviewsという俗称がある.pyのファイルにあります.
次に、HTMLドキュメントの形式で現在の日付と時刻を返すビュー関数を示します.
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "It is now %s." % now
return HttpResponse(html)
作成プロセス:
Djangoは,リクエストと応答オブジェクトを用いてシステムを介して状態を伝達する.ブラウザがサービス側にページを要求すると、Djangoは要求に関するメタデータを含むHttpRequestオブジェクトを作成します.その後、Djangoは対応するビューをロードし、このHttpRequestオブジェクトを最初のパラメータとしてビュー関数に渡します.各ビューは、HttpResponseオブジェクトを返します.
カタログに戻る
FBVとCBV
FBV function based views関数ベースのビューCBV class based viewsクラスベースのビューCBVとFBVルーティングの本質はurl+関数メモリアドレスです
FBV
# FBV
def add_class(request):
if request.method == "POST":
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")
return render(request, "add_class.html")
CBV
# CBV
from django.views import View
class AddClass(View):
def get(self, request):
return render(request, "add_class.html")
def post(self, request):
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")
注意:
CBVを使用する場合urls.pyでも対応する修正を行います.
# urls.py
url(r'^add_class/$', views.AddClass.as_view()),
カタログに戻る
requestオブジェクトとresponseオブジェクト
requestオブジェクト
ページが要求されると、Djangoは、今回の要求元の情報を含むHttpRequestオブジェクトを作成します.Djangoはこのオブジェクトを応答のビュー関数に自動的に渡し、一般的にビュー関数はrequestパラメータを使用してこのオブジェクトを受け取ることになる.
共通プロパティ
公式ドキュメント:https://docs.djangoproject.com/en/1.11/ref/request-response/
responseオブジェクト
各ビューは、HttpResponseをインスタンス化し、塗りつぶし、返す必要があります.HttpResponseクラスはdjangoにある.httpモジュールではshortcutsからインポートすることもできます
例:文字列を渡す
from django.http import HttpResponse
response = HttpResponse("Here's the text of the Web page.")
response = HttpResponse("Text only, please.", content_type="text/plain")
レスポンスヘッダ情報の設定または削除
response = HttpResponse()
response['Content-Type'] = 'text/html; charset=UTF-8'
del response['Content-Type']
共通プロパティ
カタログに戻る
JsonResponseオブジェクト
JsonResponseはHttpResponseのサブクラスであり、JSON符号化の応答を生成するのに特化している.
例:
from django.http import JsonResponse
response = JsonResponse({
'foo': 'bar'})
print(response.content)
b'{"foo": "bar"}' # ,json
注:デフォルトでは辞書タイプのみが渡されます.非辞書タイプを渡すにはsafeキーワードパラメータを設定する必要があります.
response = JsonResponse([1, 2, 3], safe=False)
json形式のデータ種に中国語がある場合、
json.dumps({
'name':' '},ensure_ascii = False)
JsonResponse(dic,json_dumps_params={
'ensure_ascii':False})
カタログに戻る