Metadata-Version: 1.0
Name: django-pdb
Version: 0.4.2
Summary: Easier pdb debugging for Django
Home-page: https://github.com/tomchristie/django-pdb
Author: Tom Christie
Author-email: tom@tomchristie.com
License: Public Domain
Description: **Status**: I no longer actively use this project, and am only accepting bugfixes and django compatibility pull requests.
        
        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 it to your settings.py.
        
        For Django before 1.7 it needs to be added AFTER any apps that override the
        `runserver` or `test` commands (includes south and django.contrib.staticfiles).
        
        For Django after 1.7 it needs to be added BEFORE them.
        
        .. code:: python
        
            # Order is important and depends on your Django version.
            # With Django 1.7+ put it towards the beginning, otherwise towards the end.
            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```.
        
        Filter
        ------
        
        You can also use the template filter ``pdb`` or ``ipdb`` to explore a template variable in (i)pdb this way::
        
            {% load pdb %}
        
            {{ variable|pdb }}
            {{ variable|ipdb }}
            {{ variable|ipdb|a_filter_to_debug }}
        
        Example::
        
            bash: testproject/manage.py runserver
            Validating models...
        
            0 errors found
            Django version 1.4, using settings 'testproject.settings'
            Development server is running at http://127.0.0.1:8000/
            Quit the server with CONTROL-C.
            > /Users/tom/github/django-pdb/django_pdb/templatetags/pdb_filters.py(14)pdb()
            -> return element
            (Pdb) element
            "I'm the variable"
            (Pdb) element = "another value"
            (Pdb) c
            [11/May/2012 11:22:53] "GET /filter/ HTTP/1.1" 200 37
        
        This is useful to inspect a complex object that isn't behaving as expected or debug a filter.
        
        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.
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: Public Domain
Classifier: Framework :: Django
Classifier: Operating System :: OS Independent
