目標は「リクエストオブジェクトを複製し、イントロスペクションのためにシェルからそれをいじる」ことなので、リクエストオブジェクトをいじる最も簡単な方法は、デバッガーを使用することです。
以下をコピーしてビューに貼り付け、リロードします。
import pdb; pdb.set_trace()
次に、そのビューを指すページをリロードします。PDBのデバッガーコマンドを使用して、コンテンツを実行できます。たとえば、view関数内で、p request
requestの値を出力するために使用できます。また、標準のPythonコードを実行することもできます。
(Pdb) path = request.META['USERNAME']
(Pdb) h p
p expression
Print the value of the expression.
(Pdb) p path
'Caspar'
(Pdb) from foo.models import MyUser
(Pdb) MyUser.objects.all()
[<MyUser: Bob: 3.62810036125>, <MyUser: Tim: no rating>, <MyUser: Jim: 2.41014167534>, <MyUser: Rod: 1.35651839383>]
ipdb
さらに良いのは、 ( )をインストールすることです。これにより、派手な色とタブ補完を備えた、はるかに優れたIPythonpip install ipdb
シェルを使用できます。
または、デバッガーは必要ないがインタラクティブなコンソールが必要な場合は、IPython(pip install ipython
)をインストールして次のスニペットを使用します。
import IPython; IPython.embed()
IPythonはipdbの前提条件であるため、ipdbをインストールするとIPythonもインストールされることに注意してください。