| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Django ミドルウェア」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==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 のリクエスト/レスポンス処理をフック するためのフレームワークです。ミドルウェアは軽量かつ低水準な「プラグイン」 システムで、Django の入出力を操作します。
+
*ミドルウェア (Middleware) とは、 [[Django]] のリクエスト/レスポンス処理をフック するためのフレームワークです。ミドルウェアは軽量かつ低水準な「プラグイン」 システムで、[[Django]] の入出力を操作します。
 
===ミドルウェアの有効化===
 
===ミドルウェアの有効化===
*ミドルウェアコンポーネントを有効化するには、Django 設定ファイルの MIDDLEWARE_CLASSES リストにコンポーネントを追加します。
+
*ミドルウェアコンポーネントを有効化するには、[[Django]] 設定ファイルの MIDDLEWARE_CLASSES リストにコンポーネントを追加します。
 
==セッションの使い方==
 
==セッションの使い方==
 
*http://docs.djangoproject.jp/ja/latest/topics/http/sessions.html
 
*http://docs.djangoproject.jp/ja/latest/topics/http/sessions.html
 
===セッションを有効にする===
 
===セッションを有効にする===
 
*セッション機能は ミドルウェア として実装されています。
 
*セッション機能は ミドルウェア として実装されています。
*セッション機能をオンオフするには MIDDLEWARE_CLASSES 設定を編集します。
+
*セッション機能をオンオフするには MIDDLEWA[[R]]E_CLASSES 設定を編集します。
*MIDDLEWARE_CLASSES を編集して、 'django.contrib.sessions.middleware.SessionMiddleware' を入れます。
+
*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>
+
&lt;blockquote&gt;key がない場合には KeyError を送出します。&lt;/blockquote&gt;
 
  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 HttpResponse("You're logged in.")
+
         return Http[[R]]esponse("You're logged in.")
 
     else:
 
     else:
         return HttpResponse("Your username and password didn't match.")
+
         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 HttpResponse("You're logged out.")
+
     return Http[[R]]esponse("You're logged out.")

2020年2月16日 (日) 04:24時点における最新版

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.")