由於你的目標是「複製一個請求對象,並從shell中爲它進行自省」,所以完成請求對象擺弄的最簡單方法是使用調試器。
複製以下內容粘貼到您的視圖,並重新加載它:
import pdb; pdb.set_trace()
現在重新加載頁面指向該視圖&您可以使用PDB's debugger commands給exec你的東西。例如,一個視圖功能在裏面可以使用p 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
(pip install ipdb
),它可以讓你使用更漂亮IPython外殼,花哨的顏色和標籤完成。
或者,如果你有沒有需要一個調試器,但只是想要一個交互式控制檯,安裝IPython中(pip install ipython
),並使用下面的代碼片段:
import IPython; IPython.embed()
注意,IPython的是IPDB的前提條件,安裝ipdb也將安裝IPython。
爲什麼你需要它在殼? – miki725
真的不確定你在這裏要做什麼。但是你可以在shell中導入'WSGIRequest':'從django.core.handlers.wsgi導入WSGIRequest'。 –
方便,我想從'manage.py shell'中的類似字典的對象中訪問值。 – Bentley4