Spojrzałem na inne pytania i nie mogę tego zrozumieć ...
Wykonałem następujące czynności, aby zainstalować pasek narzędzi django-debug:
- pip install django-debug-toolbar
- dodane do klas oprogramowania pośredniego:
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', )
3 Dodane INTERNAL_IPS:
INTERNAL_IPS = ('174.121.34.187',)
4 Dodano pasek debug_toolbar do zainstalowanych aplikacji
Nie otrzymuję żadnych błędów ani niczego, a pasek narzędzi nie pojawia się na żadnej stronie, nawet na panelu administracyjnym.
Dodałem nawet katalog szablonów debug_toolbar do mojego TEMPLATE_DIRS
python
django
django-debug-toolbar
AlexBrand
źródło
źródło
INTERNAL_IPS
jest poprawny. Jednym ze sposobów sprawdzenia jest widok, wydrukowanie plikurequest.META['REMOTE_ADDR']
, a następnie dodanie go do plikuINTERNAL_IPS
.'*'
wewnętrzne adresy IP, ale to nie działa. Musisz wprowadzić konkretne adresy IP.Odpowiedzi:
Głupie pytanie, ale o nim nie wspomniałeś, więc ... Co jest
DEBUG
ustawione? Nie załaduje się, chyba że jestTrue
.Jeśli nadal nie działa, spróbuj również dodać „127.0.0.1” do
INTERNAL_IPS
.AKTUALIZACJA
To ostatnia próba, nie powinieneś tego robić, ale wyraźnie pokaże, czy jest tylko jakiś problem z konfiguracją, czy też jest jakiś większy problem.
Dodaj następujące elementy do settings.py:
To skutecznie usunie wszystkie sprawdzenia przez pasek narzędzi debugowania, aby określić, czy powinien, czy nie powinien się ładować; zawsze będzie się ładować. Pozostaw to tylko do celów testowych, jeśli zapomnisz i uruchomisz z nim, wszyscy odwiedzający zobaczą również pasek narzędzi debugowania.
Aby uzyskać jawną konfigurację, zapoznaj się również z oficjalną dokumentacją dotyczącą instalacji tutaj .
EDYCJA (17.06.2015):
Najwyraźniej zmieniła się składnia opcji jądrowej. Jest teraz w swoim własnym słowniku:
Ich testy wykorzystują ten słownik.
źródło
runserver
ponowne uruchomienie. Heck, zrestartujrunserver
też. Upewnij się, że zmiany settings.py faktycznie został zapisany / zaangażowani. Możesz spróbować usunąć pliki * .pyc. W * nix możesz to zrobić po prostu zfind . -name "*.pyc" -exec rm {} \;
poziomu katalogu głównego projektu. Na koniec uruchom,python manage.py shell
wykonajfrom django.conf import settings
i sprawdź wartośćsettings.INSTALLED_APPs
.INTERNAL_IPS
, są one przeznaczone dla klienta, a nie serwera (Django). Innymi słowy, wpisujesz swój adres IP, abyś mógł zobaczyć pasek narzędzi debugowania, bez względu na adres IP, na którym działa witryna.SHOW_TOOLBAR_CALLBACK = lambda x: True
collectstatic
żeby wszystko się ukazało.Pasek narzędzi debugowania chce, aby adres IP w request.META [„REMOTE_ADDR”] był ustawiony w ustawieniu INTERNAL_IPS. Wrzuć wydrukowane oświadczenie w jednym ze swoich widoków, takich jak:
A następnie załaduj tę stronę. Upewnij się, że adres IP jest w ustawieniu INTERNAL_IPS w settings.py.
Normalnie pomyślałbym, że byłbyś w stanie łatwo określić adres, patrząc na adres IP twojego komputera, ale w moim przypadku uruchamiam serwer w wirtualnej skrzynce z przekierowaniem portów ... i kto wie, co się stało. Pomimo tego, że nie widziałem go nigdzie w ifconfig na VB lub moim własnym systemie operacyjnym, adres IP, który pojawił się w kluczu REMOTE_ADDR, był tym, co spowodowało aktywację paska narzędzi.
źródło
INTERNAL_IPS
i zaczęło działać.Jeśli wszystko inne jest w porządku, możliwe, że w Twoim szablonie brakuje wyraźnego
<body>
tagu zamykającego.źródło
DEBUG_TOOLBAR_CONFIG = {'INSERT_BEFORE':'</head>'}
zadziałałoObecna stabilna wersja 0.11.0 wymaga spełnienia następujących warunków, aby pasek narzędzi był wyświetlany:
Plik ustawień:
DEBUG = True
INTERNAL_IPS
aby dołączyć adres IP przeglądarki, a nie adres serwera. Jeśli przeglądasz lokalnie, tak powinno byćINTERNAL_IPS = ('127.0.0.1',)
. Jeśli przeglądasz zdalnie, po prostu podaj swój adres publiczny .INSTALLED_APPS = (..., 'debug_toolbar',)
MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...)
. Powinien zostać umieszczony jak najwcześniej na liście.Pliki szablonów:
text/html
</html>
tag zamykającyPliki statyczne:
Jeśli obsługujesz treści statyczne, pamiętaj, aby zebrać pliki css, js i html, wykonując:
Uwaga o nadchodzących wersjach django-debug-toolbar
Nowsze wersje deweloperskie dodały wartości domyślne dla punktów ustawień 2, 3 i 4, co sprawia, że życie jest nieco prostsze, jednak tak jak każda wersja rozwojowa ma błędy. Okazało się, że najnowsza wersja z gita spowodowała
ImproperlyConfigured
błąd podczas uruchamiania przez nginx / uwsgi.Tak czy inaczej, jeśli chcesz zainstalować najnowszą wersję z github, uruchom:
Możesz również sklonować określone zatwierdzenie, wykonując:
źródło
Próbowałem wszystkiego, od ustawień
DEBUG = True
, po ustawieniaINTERNAL_IPS
adresu IP mojego klienta, a nawet ręczne konfigurowanie paska narzędzi Django Debug (zwróć uwagę, że ostatnie wersje automatycznie wprowadzają wszystkie konfiguracje, takie jak dodawanie oprogramowania pośredniego i adresów URL). Nic nie działało na zdalnym serwerze programistycznym (chociaż działało lokalnie). Jedyną rzeczą, która działała, była konfiguracja paska narzędzi w następujący sposób:Zastępuje to domyślną metodę, która decyduje, czy pasek narzędzi ma być wyświetlany, i zawsze zwraca wartość true.
źródło
Doker
Jeśli programujesz z serwerem Django w kontenerze Docker z dockerem, instrukcje włączania paska narzędzi nie działają. Powód jest związany z faktem, że rzeczywisty adres, do którego należałoby dodać,
INTERNAL_IPS
będzie czymś dynamicznym, na przykład 172.24.0.1. Zamiast próbować dynamicznie ustawiać wartośćINTERNAL_IPS
, prostym rozwiązaniem jest zastąpienie funkcji, która włącza pasek narzędzisettings.py
, na przykład:Powinno to również działać w innych sytuacjach związanych z routingiem dynamicznym, takich jak włóczęga.
Oto więcej szczegółów dla ciekawskich. Kod w django_debug_tool, który określa, czy wyświetlić pasek narzędzi, sprawdza wartość w
REMOTE_ADDR
następujący sposób:więc jeśli tak naprawdę nie znasz wartości z
REMOTE_ADDR
powodu dynamicznego routingu dockera, pasek narzędzi nie będzie działał. Możesz na przykład użyć polecenia docker network, aby zobaczyć dynamiczne wartości IPdocker network inspect my_docker_network_name
źródło
Mam pasek narzędzi działający idealnie. W tej konfiguracji:
DEBUG = True
INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
MIDDLEWARE_CLASSES
:Mam nadzieję, że to pomoże
źródło
base.py
ciebie chcieć dodać go dolocal.py
:MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE_CLASSES
.Dodaj
10.0.2.2
do swojego INTERNAL_IPS w systemie Windows, jest używany wewnętrznie z włóczęgąINTERNAL_IPS = ('10 .0.2.2 ',)
To powinno działać.
źródło
Miałem ten sam problem i ostatecznie rozwiązałem go po pewnym googlowaniu.
W INTERNAL_IPS musisz mieć adres IP klienta .
źródło
Inną rzeczą, która może spowodować, że pasek narzędzi pozostanie ukryty, jest to, że nie może znaleźć wymaganych plików statycznych. Szablony debug_toolbar używają tagu szablonu {{STATIC_URL}}, więc upewnij się, że w Twoich statycznych plikach znajduje się folder o nazwie debug toolbar.
W większości instalacji powinno się tym zająć polecenie zarządzania zbiorczego.
źródło
Wypróbowałem konfigurację z cookiecutter-django pydanny'ego i zadziałała:
Po prostu zmodyfikowałem go, dodając
'debug_toolbar.apps.DebugToolbarConfig'
zamiast tego,'debug_toolbar'
jak wspomniano w oficjalnej dokumentacji django-debug-toolbar , ponieważ używam Django 1.7.źródło
Dodatek do poprzednich odpowiedzi:
jeśli pasek narzędzi nie pojawia się, ale ładuje się w html (sprawdź html swojej witryny w przeglądarce, przewiń w dół)
problem może polegać na tym, że nie znaleziono statycznych plików paska narzędzi debugowania (możesz to również zobaczyć w dziennikach dostępu do witryny, np. błędy 404 dla /static/debug_toolbar/js/toolbar.js)
Można to naprawić w następujący sposób (przykłady dla nginx i apache):
Konfiguracja nginx:
konfiguracja apache:
Lub:
więcej o collectstatic tutaj: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#collectstatic
Lub ręcznie przenieś folder debug_toolbar plików statycznych debug_toolbar do ustawionego folderu plików statycznych
źródło
W moim przypadku był to kolejny problem, o którym jeszcze nie wspomniano: na mojej liście programów pośredniczących miałem GZipMiddleware.
Ponieważ automatyczna konfiguracja paska narzędzi debugowania umieszcza oprogramowanie pośrednie paska narzędzi debugowania na górze, otrzymuje on tylko „zobacz” spakowany kodem HTML HTML, do którego nie może dodać paska narzędzi.
Usunąłem GZipMiddleware w moich ustawieniach programistycznych. Ręczne skonfigurowanie konfiguracji paska narzędzi debugowania i umieszczenie oprogramowania pośredniego po GZip powinno również działać.
źródło
gzip_page
powoduje zniknięcie paska narzędzi. docs.djangoproject.com/en/2.0/topics/http/decorators/ ...W moim przypadku wystarczyło usunąć skompilowane pliki Pythona (
*.pyc
)źródło
django 1.8.5:
Musiałem dodać następujące elementy do pliku url.py projektu, aby wyświetlić pasek narzędzi debugowania. Następnie zostanie wyświetlony pasek narzędzi debugowania.
django 1.10: i nowsze:
Nie zapomnij również dołączyć paska debug_toolbar do oprogramowania pośredniego. Pasek narzędzi debugowania jest głównie zaimplementowany w oprogramowaniu pośrednim. Włącz go w swoim module ustawień w następujący sposób: (nowsze wersje django)
Oprogramowanie pośredniczące w starym stylu: (trzeba mieć klucz _CLASSES w oprogramowaniu pośrednim)
źródło
Nie dotyczyło to tego konkretnego autora, ale po prostu zmagałem się z tym, że pasek narzędzi debugowania nie wyświetlał się i po wykonaniu wszystkiego, co wskazali, okazało się, że to problem z zamówieniem MIDDLEWARE. Umieszczenie oprogramowania pośredniego na początku listy może więc zadziałać. Mój jest pierwszy:
MIDDLEWARE_CLASSES = ( 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'dynpages.middleware.DynpageFallbackMiddleware', 'utils.middleware.UserThread', )
źródło
musisz upewnić się, że w szablonach znajduje się tag zamykający.
Mój problem polega na tym, że w moich szablonach nie ma zwykłych tagów HTML, po prostu wyświetlam treść w postaci zwykłego tekstu. Rozwiązałem to dziedzicząc każdy plik html z base.html, który ma tag.
źródło
Dla mnie było to tak proste, jak wpisanie
127.0.0.1:8000
w pasku adresu, a nie to,localhost:8000
co najwyraźniej nie pasowało do INTERNAL_IPS.źródło
Mam ten sam problem, rozwiązałem go, przeglądając dziennik błędów Apache. Mam apache działający na Mac OS X z mod_wsgi Tamplete folder debug_toolbar nie był ładowany
Próbka dziennika:
Po prostu dodaję tę linię do mojego pliku VirtualHost:
źródło
Miałem ten sam problem z Vagrantem. Rozwiązałem ten problem, dodając
::ffff:192.168.33.1
do INTERNAL_IPS, jak na poniższym przykładzie.Pamiętając, że
192.168.33.10
jest to adres IP w mojej prywatnej sieci w Vagrantfile.źródło
Miałem ten problem i musiałem zainstalować pasek narzędzi debugowania ze źródła.
Wersja 1.4 ma problem, gdzie jest ukryta, jeśli używasz PureCSS i najwyraźniej innych frameworków CSS.
To jest zatwierdzenie, które to naprawia.
Dokumentacja wyjaśnia, jak zainstalować ze źródła.
źródło
Dla każdego, kto używa Pycharm 5 - debugowanie szablonów nie działa w niektórych wersjach. Naprawiono w wersji 5.0.4, dotyczy wersji - 5.0.1, 5.0.2 Sprawdź problem
Poświęć dużo czasu, aby się tego dowiedzieć. Może komuś pomoże
źródło
W kodzie, nad którym pracowałem, podczas obsługi głównego żądania pojawiło się wiele małych żądań (jest to bardzo specyficzny przypadek użycia). Były to żądania obsługiwane przez ten sam wątek Django. Pasek narzędzi debugowania Django (DjDT) nie oczekuje takiego zachowania i dołącza paski narzędzi DjDT do pierwszej odpowiedzi, a następnie usuwa stan wątku. Więc kiedy główne żądanie zostało wysłane z powrotem do przeglądarki, DjDT nie został uwzględniony w odpowiedzi.
Wyciągnięte wnioski: DjDT zapisuje swój stan na wątek. Usuwa stan wątku po pierwszej odpowiedzi.
źródło
To, co mnie dało, to przestarzała przeglądarka!
Zauważyłem, że ładuje niektóre arkusze stylów z paska narzędzi debugowania i zgadłem, że może to być problem z interfejsem.
źródło
Jedna głupia rzecz mnie dopadła ... że jeśli używasz apache wsgi, pamiętaj, aby dotknąć pliku .wsgi, aby wymusić ponowną kompilację kodu. po prostu zmarnuj 20 minut mojego czasu na debugowanie głupiego błędu :(
źródło