「Django ミドルウェア」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Django ミドルウェア== [Django] *http://docs.djangoproject.jp/ja/latest/topics/http/middleware.html *ミドルウェア (Middleware) とは、 Django のリ…」) |
|||
| (同じ利用者による、間の2版が非表示) | |||
| 1行目: | 1行目: | ||
| − | ==Django ミドルウェア== | + | ==[[Django ミドルウェア]]== |
| − | [Django] | + | [[Django]] | |
*http://docs.djangoproject.jp/ja/latest/topics/http/middleware.html | *http://docs.djangoproject.jp/ja/latest/topics/http/middleware.html | ||
| − | *ミドルウェア (Middleware) とは、 Django のリクエスト/レスポンス処理をフック するためのフレームワークです。ミドルウェアは軽量かつ低水準な「プラグイン」 | + | *ミドルウェア (Middleware) とは、 [[Django]] のリクエスト/レスポンス処理をフック するためのフレームワークです。ミドルウェアは軽量かつ低水準な「プラグイン」 システムで、[[Django]] の入出力を操作します。 |
===ミドルウェアの有効化=== | ===ミドルウェアの有効化=== | ||
| − | * | + | *ミドルウェアコンポーネントを有効化するには、[[Django]] 設定ファイルの MIDDLEWARE_CLASSES リストにコンポーネントを追加します。 |
==セッションの使い方== | ==セッションの使い方== | ||
*http://docs.djangoproject.jp/ja/latest/topics/http/sessions.html | *http://docs.djangoproject.jp/ja/latest/topics/http/sessions.html | ||
===セッションを有効にする=== | ===セッションを有効にする=== | ||
*セッション機能は ミドルウェア として実装されています。 | *セッション機能は ミドルウェア として実装されています。 | ||
| − | *セッション機能をオンオフするには | + | *セッション機能をオンオフするには MIDDLEWA[[R]]E_CLASSES 設定を編集します。 |
| − | * | + | *MIDDLEWA[[R]]E_CLASSES を編集して、 'django.contrib.sessions.middleware.SessionMiddleware' を入れます。 |
*INSTALLED_APPS 設定に 'django.contrib.sessions' を入れ、 manage.py syncdb を実行して、セッションデータを保存するためのデー タベーステーブルを作成します。 | *INSTALLED_APPS 設定に 'django.contrib.sessions' を入れ、 manage.py syncdb を実行して、セッションデータを保存するためのデー タベーステーブルを作成します。 | ||
====セッションエンジンの設定==== | ====セッションエンジンの設定==== | ||
| − | *デフォルトでは、 Django はセッションをデータベースに (django.contrib.sessions.models.Session モデルを使って) 保存します。 | + | *デフォルトでは、 [[Django]] はセッションをデータベースに (django.contrib.sessions.models.Session モデルを使って) 保存します。 |
=====ファイルベースのセッション===== | =====ファイルベースのセッション===== | ||
*SESSION_ENGINE 設定を "django.contrib.sessions.backends.file" にします。 | *SESSION_ENGINE 設定を "django.contrib.sessions.backends.file" にします。 | ||
| 21行目: | 21行目: | ||
* SESSION_ENGINE に "django.contrib.sessions.backends.cache" を設定してください。 | * SESSION_ENGINE に "django.contrib.sessions.backends.cache" を設定してください。 | ||
===ビュー中でセッションを扱う=== | ===ビュー中でセッションを扱う=== | ||
| − | *SessionMiddleware を有効にすると、各々の HttpRequest オブジェクト (Django ビュー関数の最初の引数) は辞書ライクオブジェクトの属性 session を持つようになります。この属性は読み書き可能です。 | + | *SessionMiddleware を有効にすると、各々の HttpRequest オブジェクト ([[Django]] ビュー関数の最初の引数) は辞書ライクオブジェクトの属性 session を持つようになります。この属性は読み書き可能です。 |
====セッションオブジェクトは標準辞書オブジェクトのメソッドを実装し ています==== | ====セッションオブジェクトは標準辞書オブジェクトのメソッドを実装し ています==== | ||
=====例===== | =====例===== | ||
| 27行目: | 27行目: | ||
request.session['fav_color'] = 'blue' | request.session['fav_color'] = 'blue' | ||
del request.session['fav_color'] | del request.session['fav_color'] | ||
| − | + | <blockquote>key がない場合には KeyError を送出します。</blockquote> | |
fav_color' in request.session | fav_color' in request.session | ||
fav_color = request.session.get('fav_color', 'red') | fav_color = request.session.get('fav_color', 'red') | ||
| 35行目: | 35行目: | ||
if m.password == request.POST['password']: | if m.password == request.POST['password']: | ||
request.session['member_id'] = m.id | request.session['member_id'] = m.id | ||
| − | return | + | return Http[[R]]esponse("You're logged in.") |
else: | else: | ||
| − | return | + | return Http[[R]]esponse("Your username and password didn't match.") |
=====ログアウトの例===== | =====ログアウトの例===== | ||
def logout(request): | def logout(request): | ||
| 44行目: | 44行目: | ||
except KeyError: | except KeyError: | ||
pass | pass | ||
| − | return | + | return Http[[R]]esponse("You're logged out.") |
2020年2月16日 (日) 04:24時点における最新版
目次
Django ミドルウェア
Django |
- http://docs.djangoproject.jp/ja/latest/topics/http/middleware.html
- ミドルウェア (Middleware) とは、 Django のリクエスト/レスポンス処理をフック するためのフレームワークです。ミドルウェアは軽量かつ低水準な「プラグイン」 システムで、Django の入出力を操作します。
ミドルウェアの有効化
- ミドルウェアコンポーネントを有効化するには、Django 設定ファイルの MIDDLEWARE_CLASSES リストにコンポーネントを追加します。
セッションの使い方
セッションを有効にする
- セッション機能は ミドルウェア として実装されています。
- セッション機能をオンオフするには MIDDLEWARE_CLASSES 設定を編集します。
- MIDDLEWARE_CLASSES を編集して、 'django.contrib.sessions.middleware.SessionMiddleware' を入れます。
- INSTALLED_APPS 設定に 'django.contrib.sessions' を入れ、 manage.py syncdb を実行して、セッションデータを保存するためのデー タベーステーブルを作成します。
セッションエンジンの設定
- デフォルトでは、 Django はセッションをデータベースに (django.contrib.sessions.models.Session モデルを使って) 保存します。
ファイルベースのセッション
- SESSION_ENGINE 設定を "django.contrib.sessions.backends.file" にします。
- 必要に応じて SESSION_FILE_PATH も設定してください (デフォルト値は tempfile.gettempdir() の戻り値で、たいていは /tmp です)。
キャッシュベースのセッション
- SESSION_ENGINE に "django.contrib.sessions.backends.cache" を設定してください。
ビュー中でセッションを扱う
- SessionMiddleware を有効にすると、各々の HttpRequest オブジェクト (Django ビュー関数の最初の引数) は辞書ライクオブジェクトの属性 session を持つようになります。この属性は読み書き可能です。
セッションオブジェクトは標準辞書オブジェクトのメソッドを実装し ています
例
fav_color = request.session['fav_color'] request.session['fav_color'] = 'blue' del request.session['fav_color']
<blockquote>key がない場合には KeyError を送出します。</blockquote>
fav_color' in request.session
fav_color = request.session.get('fav_color', 'red')
ログインの例
def login(request):
m = Member.objects.get(username__exact=request.POST['username'])
if m.password == request.POST['password']:
request.session['member_id'] = m.id
return HttpResponse("You're logged in.")
else:
return HttpResponse("Your username and password didn't match.")
ログアウトの例
def logout(request):
try:
del request.session['member_id']
except KeyError:
pass
return HttpResponse("You're logged out.")
© 2006 矢木浩人