Используйте BPython в качестве отладчика для приложения Django

В настоящее время я разрабатываю приложение Django, и мне нравится использовать pdb, чтобы узнать, в каком состоянии находится мое приложение и что-то в этом роде. Я хотел бы иметь все удивительные возможности BPython внутри отладчика... Как автозаполнение и тому подобное.
Это вообще возможно? Спасибо:)

1 ответ

Я знаю, что это довольно давно, но я все еще не мог найти решение, которое мне понравилось, и в итоге получил решение ниже, в котором используется команда django.

Другой ответ Ника тоже работает, но мне не нравится добавлять конкретные вещи Django в мои глобальные .pythonrc

#myapp/management/commands/bshell.py

from django.core.management.base import BaseCommand
from django.apps import apps


class Command(BaseCommand):
    help = "Runs the bpython interactive interpreter if it's installed."
    requires_model_validation = False

    def handle(self, *args, **options):
        loaded_models = apps.get_models()

        models = {}
        for model in loaded_models:
            models[model.__name__] = model

        import bpython

        bpython.embed(models)
.venv ❯ python manage.py bshell
>>> Locat
┌───────────────────────────────────────────────────────────────────────────────────┐
│ Location(                                                                         │
└───────────────────────────────────────────────────────────────────────────────────┘

Поместите некоторый код в файл запуска Python Repl, чтобы обнаружить, что вы находитесь в проекте Django, и выполните необходимые операции импорта:

  1. поместите это в ваш ~/.bashrc или ~/.bash_profile
    export PYTHONSTARTUP=~/.pythonrc

  2. Создайте или отредактируйте свой ~/.pythonrc:

    try:
        from django.core.management import setup_environ
        import settings
        setup_environ(settings)
        print 'imported django settings'
    except:
        pass
    

    ИЛИ Используйте этот более сложный фрагмент, который импортирует все ваши модули django и работает в подкаталогах проекта здесь: https://gist.github.com/pirate/2659b242bded82c3c58f2458e6885738

Другие вопросы по тегам