Metadata-Version: 2.3
Name: django-debug-request
Version: 1.0.0
Summary: Execute cURL-like commands with logging within your Django production environment.
Project-URL: Homepage, https://github.com/raphaelm/django-debug-request
Project-URL: Issues, https://github.com/raphaelm/django-debug-request/issues
Author-email: Raphael Michel <mail@raphaelmichel.de>
License-File: LICENSE
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.9
Description-Content-Type: text/x-rst

django-debug-request
====================

.. image:: https://img.shields.io/pypi/v/django-debug-request.svg
   :target: https://pypi.python.org/pypi/django-debug-request

It's cURL in your Django! This is a very small and light-weight alternative to something like
django-debug-toolbar that is useful to use in production when you need to figure out what is going
wrong. It consists of one management command that supports limited subsect of the cURL command's
arguments, but executes the request inside the Django stack using ``django.test.client.Client`` –
with extended debug output.

Tested with Django 4.2 and 5.0.

Installation
------------

First, install the package::

    pip install django-debug request

Then, add it to your installed apps::

    INSTALLED_APPS = [
        …
        "django_debug_request",
    ]

That's it!

Usage
-----

Use your app in production and choose "Copy to cURL" in your browser's developer tools for
the request you are interested in. Replace ``curl`` with ``python manage.py debug_request``
and run it against your server.

Supported cURL options:

- ``-X``/``--method``
- ``-H``/``--header``
- ``-data-raw``
- ``--compressed`` (will be ignored since you probably do not like compressd output, but is
  supported for compatibility with cURL lines generated by Chrome)

Supported other options

- ``--print-sql`` Log all SQL queries

Example::

    $ python manage.py debug_request https://localhost/admin/login/
    DEBUG 2024-05-01 09:03:15,790 debug_request debug_request Extra array: {'HTTP_HOST': 'localhost'}
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response code: 200
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Resolver match: ResolverMatch(func=django.contrib.admin.sites.login, args=(), kwargs={}, url_name='login', app_names=['admin'], namespaces=['admin'], route='admin/login/')
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: Content-Type: text/html; charset=utf-8
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: Expires: Wed, 01 May 2024 09:03:15 GMT
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: Vary: Cookie
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: X-Frame-Options: DENY
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: Content-Length: 4145
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: X-Content-Type-Options: nosniff
    DEBUG 2024-05-01 09:03:15,805 debug_request debug_request Response header: Referrer-Policy: same-origin
    DEBUG 2024-05-01 09:03:15,806 debug_request debug_request Response header: Cross-Origin-Opener-Policy: same-origin
    <html>
    …

License
-------

Apache License