3-Djangoビュー
概要
役割:ビューはWEB要求を受信してWEB応答に戻る
方法:1.FBV(function base views)は、ビューで関数を使用してリクエストを処理します.
2. CBV(class base views)は、ビューでクラス処理要求を使用する.
応答:HTMLページ、リダイレクト、404エラー、JSONデータなど
プロセス:
URLConf
ビュー関数
HttpRequestオブジェクト
概要:サーバはhttpプロトコルの要求を受信すると、メッセージに基づいてHttpRequestオブジェクトを作成します.ビュー関数のパラメータの1つがHttpRequestオブジェクトです
ツールバーの
方法
is_ajax():リクエストがXMLHTTPRequestクラスによって開始された場合は、Trueを返します.
QueryDictオブジェクトclipboard.png
GET属性
http://127.0.0.1:8000/get1/?a=1&b=2&c=3
http://127.0.0.1:8000/get2/?a=1&a=2&c=3
POST属性
フォームのコミットを使用するにはsettingsが必要です.pyファイルの'django.middleware.csrf.CsrfViewMiddleware,ミドルウェア削除
または{%csrf_token}を付ける
HttpResponseオブジェクト
概要:HttpRequestオブジェクトはDjangoによって自動的に作成されますが、HttpResponseオブジェクトはプログラマーによって作成されます.ストレージサーバがクライアントに応答するデータ
使用法
一般的なMIMEタイプ(汎用):ハイパーテキストタグ言語テキスト.html text/html xmlドキュメント.xml text/xml XHTMLドキュメント.xhtml application/xhtml+xml 普通テキスト.txt text/plain RTFテキスト.rtf application/rtf PDFドキュメント.pdf application/pdf Microsoft Wordファイルword application/msword PNG画像.png image/png GIFパターン.gif image/gif JPEGパターン.jpeg,.jpg image/jpeg auサウンドファイル.au audio/basic MIDI音楽ファイルmid,.midi audio/midi,audio/x-midi RealAudio音楽ファイル.ra, .ram audio/x-pn-realaudio MPEGファイル.mpg,.mpeg video/mpeg AVIファイル.avi video/x-msvideo GZIPファイル.gz application/x-gzip TARファイル.tar application/x-tar 任意のバイナリデータアプリケーション/octet-stream ツールバーの
ツールバーの
説明
content
返される内容、文字列のタイプを表します.
charset
responseが採用する符号化文字セット、文字列タイプを表す
status_code
HTTPに応答するステータスコード
content_type
出力のMIMEタイプを指定
方法
init:ページを使用してHttpResponseオブジェクトをインスタンス化する
write(content):
flush():バッファをファイルで出力する;flushの後でwriteを書かないでください
set_Cookie():プロトタイプ:
パラメータ: key:cookieのキー value:cookieの値 max_age:有効期限単位秒 expires:有効期限datetimeを設定.datetimeオブジェクト 例:
サブクラスHttpResponseRedirect
機能:リダイレクト、サーバー側ジャンプ
インプリメンテーション
サブクラスJsonResponse
JSONデータを返し、一般的に非同期要求に用いられる
利点:ユーザーがJSON符号化応答を作成するのを助ける;パラメータは辞書オブジェクトであり、リストなどの辞書形式でない場合、パラメータsafe=Falseを設定します.JsonResponseのデフォルトContent-Typeはアプリケーション/jsonで、書く必要はありません.
じょうたいほじ
概要
セッションの有効化
セッションの使用
セッションを有効にすると、各HttpRequestオブジェクトには、辞書のようなオブジェクトであるセッション属性があります.
方法
説明する
get(key, default=None)
キーに基づいてセッションの値を取得
clear()
すべてのセッションをクリア
flush()
現在のセッションを削除し、セッションのクッキーを削除
del request.セッション[キー]
セッションの削除
例
有効期限
ストレージセッション
≪データベース・ベース・セッション|Database Based Sessions|oem_src≫:デフォルトのセッション・ストレージ
≪キャッシュ・ベース・セッション|Sessions Based Cached|oem_src≫:ローカル・メモリのみが存在し、失われた場合にはリカバリできません.データベースの読み書きよりも高速です.
データベースは永続化に使用され、キャッシュは効率化に使用され、まずキャッシュからデータを取得し、キャッシュはデータベースから取得されず、キャッシュに1部保存されます.
redisキャッシュセッションの使用
役割:ビューはWEB要求を受信してWEB応答に戻る
方法:1.FBV(function base views)は、ビューで関数を使用してリクエストを処理します.
2. CBV(class base views)は、ビューでクラス処理要求を使用する.
応答:HTMLページ、リダイレクト、404エラー、JSONデータなど
プロセス:
URLConf
ビュー関数
HttpRequestオブジェクト
概要:サーバはhttpプロトコルの要求を受信すると、メッセージに基づいてHttpRequestオブジェクトを作成します.ビュー関数のパラメータの1つがHttpRequestオブジェクトです
ツールバーの
方法
is_ajax():リクエストがXMLHTTPRequestクラスによって開始された場合は、Trueを返します.
QueryDictオブジェクトclipboard.png
GET属性
http://127.0.0.1:8000/get1/?a=1&b=2&c=3
def get1(request):
a = request.GET.get("a")
b = request.GET.get("b")
c = request.GET.get("c")
return HttpResponse(a+"-"+b+"-"+c)
http://127.0.0.1:8000/get2/?a=1&a=2&c=3
def get2(request):
alist = request.GET.getlist("a")
c = request.GET.get("c")
return HttpResponse(alist[0]+"-"+alist[1]+"-"+c)
POST属性
フォームのコミットを使用するにはsettingsが必要です.pyファイルの'django.middleware.csrf.CsrfViewMiddleware,ミドルウェア削除
または{%csrf_token}を付ける
#views.py
def register(request):
if request.method == "GET":
return render(request, "register.html")
else:
username = request.POST.get("username")
passwd = request.POST.get("passwd")
hobbys = request.POST.getlist("hobby")
print(username, passwd, hobbys)
return HttpResponse(" ")
HttpResponseオブジェクト
概要:HttpRequestオブジェクトはDjangoによって自動的に作成されますが、HttpResponseオブジェクトはプログラマーによって作成されます.ストレージサーバがクライアントに応答するデータ
使用法
一般的なMIMEタイプ(汎用):
ツールバーの
説明
content
返される内容、文字列のタイプを表します.
charset
responseが採用する符号化文字セット、文字列タイプを表す
status_code
HTTPに応答するステータスコード
content_type
出力のMIMEタイプを指定
方法
init:ページを使用してHttpResponseオブジェクトをインスタンス化する
write(content):
# , content , HttpResponse
def index(request):
response = HttpResponse()
response.content = "sunck is a good man"
response.charset = "utf-8"
response.write("!")
response.write("very good!")
return response
flush():バッファをファイルで出力する;flushの後でwriteを書かないでください
set_Cookie():プロトタイプ:
set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False)
役割:クッキーを設定し、クッキーはクライアントに保存された情報であり、キー値ペアで保存するパラメータ:
def setcookie(request):
response = HttpResponse("sunck is a handsome man")
response.set_cookie("sunck", "good")
return response
request.COOKIES.get("sunck")
サブクラスHttpResponseRedirect
機能:リダイレクト、サーバー側ジャンプ
インプリメンテーション
from django.http import HttpResponse, HttpResponseRedirect
def indexTemp(request):
# /index/
return HttpResponseRedirect("/index/")
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
def indexTemp(request):
# /index/, HttpResponseRedirect , redirect
# return HttpResponseRedirect("/index/")
return redirect("/index")
サブクラスJsonResponse
JSONデータを返し、一般的に非同期要求に用いられる
利点:ユーザーがJSON符号化応答を作成するのを助ける;パラメータは辞書オブジェクトであり、リストなどの辞書形式でない場合、パラメータsafe=Falseを設定します.JsonResponseのデフォルトContent-Typeはアプリケーション/jsonで、書く必要はありません.
じょうたいほじ
概要
セッションの有効化
# settings.py
'django.contrib.sessions',
'django.contrib.sessions.middleware.SessionMiddleware'
セッションの使用
セッションを有効にすると、各HttpRequestオブジェクトには、辞書のようなオブジェクトであるセッション属性があります.
方法
説明する
get(key, default=None)
キーに基づいてセッションの値を取得
clear()
すべてのセッションをクリア
flush()
現在のセッションを削除し、セッションのクッキーを削除
del request.セッション[キー]
セッションの削除
例
def home(request):
userAccount = request.session.get("userAccount", default=" ")
return render(request, "home.html", {"userAccount":userAccount})
def cart(request):
userAccount = request.session.get("userAccount", default=" ")
return render(request, "cart.html", {"userAccount":userAccount})
def login(request):
if request.method == "GET":
fromPath = request.GET.get("from")
return render(request, "login.html", {"fromPath":fromPath})
else:
userAccount = request.POST.get("userAccount")
passwd = request.POST.get("passwd")
#
fromPath = request.GET.get("from")
#
if userAccount == "sunck" and passwd == "sunck1999":
#
# , session
request.session["userAccount"] = userAccount
fromPath = "/" + fromPath + "/"
return redirect(fromPath)
else:
#
return redirect("/login/?from=%s"%fromPath)
from django.contrib.auth import logout
def quit(request):
logout(request)
return redirect("/home/")
有効期限
ストレージセッション
≪データベース・ベース・セッション|Database Based Sessions|oem_src≫:デフォルトのセッション・ストレージ
SESSION_ENGINE='django.contrib.sessions.backends.db'
≪キャッシュ・ベース・セッション|Sessions Based Cached|oem_src≫:ローカル・メモリのみが存在し、失われた場合にはリカバリできません.データベースの読み書きよりも高速です.
SESSION_ENGINE='django.contrib.sessions.backends.cache'
データベースは永続化に使用され、キャッシュは効率化に使用され、まずキャッシュからデータを取得し、キャッシュはデータベースから取得されず、キャッシュに1部保存されます.
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
redisキャッシュセッションの使用
SESSION_ENGINE='redis_sessions.session'
SESSION_REDIS_HOST='localhost'
SESSION_REDIS_PORT=6379
SESSION_REDIS_DB=0
SESSION_REDIS_PASSWORD=''
SESSION_REDIS_PREFIX='session'
# redis-cli :
127.0.0.1:6379> select 0
OK
127.0.0.1:6379[4]> keys *
1) "session:0bjyuegx0i5ivyuzpb8ezgo0b35u2z4v"