Easier pdb debugging for Django
Project description
Django PDB
==========
Make debugging Django easier
----------------------------
Adding ``pdb.set_trace()`` to your source files every time you want to break into pdb sucks.
Don't do that.
Do this.
Installation
------------
Install using pip::
pip install django-pdb
Add to your settings.py::
# Make sure to add django_pdb AFTER any apps that override the 'runserver'
# or 'test' commands (includes south and django.contrib.staticfiles)
INSTALLED_APPS = (
...
'django_pdb',
...
)
# Make sure to add PdbMiddleware after all other middleware.
# PdbMiddleware only activates when settings.DEBUG is True.
MIDDLEWARE_CLASSES = (
...
'django_pdb.middleware.PdbMiddleware',
)
Usage
-----
``manage.py runserver``
Drops into pdb at the start of a view if the URL includes a `pdb` GET parameter.
Drops into ipdb at the start of a view if the URL includes a `ipdb` GET parameter.
This behavior is only enabled if ``settings.DEBUG = True``::
bash: testproject/manage.py runserver
Validating models...
0 errors found
Django version 1.3, using settings 'testproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
GET /test?pdb
function "myview" in testapp/views.py:7
args: ()
kwargs: {}
> /Users/tom/github/django-pdb/testproject/testapp/views.py(8)myview()
-> a = 1
(Pdb)
``manage.py runserver --pdb`` **or** ``manage.py runserver --ipdb``
Drops into pdb/ipdb at the start of every view::
bash: testproject/manage.py runserver --pdb
Validating models...
0 errors found
Django version 1.3, using settings 'testproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
GET /test
function "myview" in testapp/views.py:7
args: ()
kwargs: {}
> /Users/tom/github/django-pdb/testproject/testapp/views.py(7)myview()
-> a = 1
(Pdb)
``manage.py test --pdb`` **or** ``manage.py test --ipdb``
Drops into pdb/ipdb on test errors/failures::
bash: testproject/manage.py test testapp --pdb
Creating test database for alias 'default'...
E
======================================================================
>>> test_error (testapp.tests.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/tom/github/django-pdb/testproject/testapp/tests.py", line 16, in test_error
one_plus_one = four
NameError: global name 'four' is not defined
======================================================================
> /Users/tom/github/django-pdb/testproject/testapp/tests.py(16)test_error()
-> one_plus_one = four
(Pdb)
Post mortem mode
-----
``manage.py runserver --pm``
Post mortem mode, drops into (i)pdb if an exception is raised in a view. This works only if there is
no other app overriding ``runserver`` command.
``POST_MORTEM = True``
You can also add ```POST_MORTEM = True``` to your ```settings.py``` to enable this option even if other app overrides ```runserver```.
Other apps that override ``test``/``runserver``
-----------------------------------------------
``manage.py test --pdb`` works if you also have other apps that
override the ``test`` command, as long as they use Python's unittest
framework.
Make sure to put ``django_pdb`` **after** any conflicting apps in
``INSTALLED_APPS`` so that they have priority.
==========
Make debugging Django easier
----------------------------
Adding ``pdb.set_trace()`` to your source files every time you want to break into pdb sucks.
Don't do that.
Do this.
Installation
------------
Install using pip::
pip install django-pdb
Add to your settings.py::
# Make sure to add django_pdb AFTER any apps that override the 'runserver'
# or 'test' commands (includes south and django.contrib.staticfiles)
INSTALLED_APPS = (
...
'django_pdb',
...
)
# Make sure to add PdbMiddleware after all other middleware.
# PdbMiddleware only activates when settings.DEBUG is True.
MIDDLEWARE_CLASSES = (
...
'django_pdb.middleware.PdbMiddleware',
)
Usage
-----
``manage.py runserver``
Drops into pdb at the start of a view if the URL includes a `pdb` GET parameter.
Drops into ipdb at the start of a view if the URL includes a `ipdb` GET parameter.
This behavior is only enabled if ``settings.DEBUG = True``::
bash: testproject/manage.py runserver
Validating models...
0 errors found
Django version 1.3, using settings 'testproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
GET /test?pdb
function "myview" in testapp/views.py:7
args: ()
kwargs: {}
> /Users/tom/github/django-pdb/testproject/testapp/views.py(8)myview()
-> a = 1
(Pdb)
``manage.py runserver --pdb`` **or** ``manage.py runserver --ipdb``
Drops into pdb/ipdb at the start of every view::
bash: testproject/manage.py runserver --pdb
Validating models...
0 errors found
Django version 1.3, using settings 'testproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
GET /test
function "myview" in testapp/views.py:7
args: ()
kwargs: {}
> /Users/tom/github/django-pdb/testproject/testapp/views.py(7)myview()
-> a = 1
(Pdb)
``manage.py test --pdb`` **or** ``manage.py test --ipdb``
Drops into pdb/ipdb on test errors/failures::
bash: testproject/manage.py test testapp --pdb
Creating test database for alias 'default'...
E
======================================================================
>>> test_error (testapp.tests.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/tom/github/django-pdb/testproject/testapp/tests.py", line 16, in test_error
one_plus_one = four
NameError: global name 'four' is not defined
======================================================================
> /Users/tom/github/django-pdb/testproject/testapp/tests.py(16)test_error()
-> one_plus_one = four
(Pdb)
Post mortem mode
-----
``manage.py runserver --pm``
Post mortem mode, drops into (i)pdb if an exception is raised in a view. This works only if there is
no other app overriding ``runserver`` command.
``POST_MORTEM = True``
You can also add ```POST_MORTEM = True``` to your ```settings.py``` to enable this option even if other app overrides ```runserver```.
Other apps that override ``test``/``runserver``
-----------------------------------------------
``manage.py test --pdb`` works if you also have other apps that
override the ``test`` command, as long as they use Python's unittest
framework.
Make sure to put ``django_pdb`` **after** any conflicting apps in
``INSTALLED_APPS`` so that they have priority.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-pdb-0.3.1.tar.gz
(6.6 kB
view details)
File details
Details for the file django-pdb-0.3.1.tar.gz
.
File metadata
- Download URL: django-pdb-0.3.1.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2133b217e3d45a9e07a5c0326e24ff1fe56a6bc6a72f7ae288ac3c7f1f29f43e |
|
MD5 | 9c32915229806093d3af44286ecbfe44 |
|
BLAKE2b-256 | 76c0a9ac51893c7c4174dda81ae905108f7fa2ed69a3e02f74ba43bbcdbdc077 |