Eu olhei para outras perguntas e não consigo descobrir ...
Fiz o seguinte para instalar o django-debug-toolbar:
- pip instala django-debug-toolbar
- adicionado às classes de middleware:
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 INTERNAL_IPS adicionados:
INTERNAL_IPS = ('174.121.34.187',)
4 Adicionado debug_toolbar aos aplicativos instalados
Não estou recebendo nenhum erro ou qualquer coisa, e a barra de ferramentas não aparece em nenhuma página, nem mesmo em administrador.
Eu até adicionei o diretório dos modelos debug_toolbar ao meu TEMPLATE_DIRS
python
django
django-debug-toolbar
AlexBrand
fonte
fonte
INTERNAL_IPS
está correto. Uma maneira de verificar é em uma visualização, imprimarequest.META['REMOTE_ADDR']
e adicione-aINTERNAL_IPS
.'*'
os IPs internos, mas isso não funciona. Você precisa inserir IPs específicos.Respostas:
Pergunta estúpida, mas você não mencionou, então ... O que está
DEBUG
definido? Não será carregado a menos que sejaTrue
.Se ainda não estiver funcionando, tente adicionar '127.0.0.1'
INTERNAL_IPS
também.ATUALIZAR
Este é um movimento de última hora esforço, você não deve ter de fazer isso, mas ele vai mostrar claramente se há apenas algum problema de configuração ou se há algum problema maior.
Adicione o seguinte ao settings.py:
Isso removerá efetivamente todas as verificações pela barra de ferramentas de depuração para determinar se ela deve ou não ser carregada; sempre será apenas carregado. Apenas deixe isso para fins de teste; se você esquecer e iniciar com ele, todos os seus visitantes também verão sua barra de ferramentas de depuração.
Para configuração explícita, consulte também os documentos oficiais de instalação aqui .
EDIT (17/6/2015):
Aparentemente, a sintaxe da opção nuclear mudou. Agora está em seu próprio dicionário:
Seus testes usam este dicionário.
fonte
runserver
reiniciar. Caramba, reinicierunserver
também. Verifique se suas alterações no settings.py foram realmente salvas / confirmadas. Você pode tentar remover os arquivos * .pyc. No * nix, você pode fazer isso simplesmente afind . -name "*.pyc" -exec rm {} \;
partir da raiz do projeto. Por fim, executepython manage.py shell
e executefrom django.conf import settings
e verifique o valor desettings.INSTALLED_APPs
.INTERNAL_IPS
, essas são para o cliente, não para o servidor (Django). Em outras palavras, você colocar no seu endereço de IP de modo que você pode ver de depuração barra de ferramentas, não importa o IP do site pode ser executado.SHOW_TOOLBAR_CALLBACK = lambda x: True
collectstatic
para fazer tudo parecer.A barra de ferramentas de depuração deseja que o endereço IP em request.META ['REMOTE_ADDR'] seja definido na configuração INTERNAL_IPS. Coloque uma declaração impressa em uma de suas visualizações como:
E, em seguida, carregue essa página. Verifique se o IP está na sua configuração INTERNAL_IPS em settings.py.
Normalmente, eu acho que você seria capaz de determinar o endereço facilmente olhando o endereço IP do seu computador, mas no meu caso, eu estou executando o servidor em uma Caixa Virtual com encaminhamento de porta ... e quem sabe o que aconteceu. Apesar de não o ver em nenhum lugar no ifconfig no VB ou no meu próprio sistema operacional, o IP que apareceu na chave REMOTE_ADDR foi o que fez o truque de ativar a barra de ferramentas.
fonte
INTERNAL_IPS
e ele começou a funcionar.Se tudo estiver bem, também pode ser que seu modelo não tenha uma
<body>
tag de fechamento explícita,fonte
DEBUG_TOOLBAR_CONFIG = {'INSERT_BEFORE':'</head>'}
funcionouA versão estável atual 0.11.0 requer o seguinte para que a barra de ferramentas seja mostrada:
Arquivo de configurações:
DEBUG = True
INTERNAL_IPS
para incluir o endereço IP do navegador, em oposição ao endereço do servidor. Se estiver navegando localmente, deve serINTERNAL_IPS = ('127.0.0.1',)
. Se estiver navegando remotamente, apenas especifique seu endereço público .INSTALLED_APPS = (..., 'debug_toolbar',)
MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...)
. Deve ser colocado o mais cedo possível na lista.Arquivos de modelo:
text/html
</html>
tag de fechamentoArquivos estáticos:
Se você estiver exibindo conteúdo estático, certifique-se de coletar css, js e html fazendo:
Nota sobre as próximas versões do django-debug-toolbar
As versões mais recentes de desenvolvimento adicionaram padrões para os pontos de configuração 2, 3 e 4, o que torna a vida um pouco mais simples, no entanto, como em qualquer versão de desenvolvimento, ela possui bugs. Eu descobri que a versão mais recente do git resultou em um
ImproperlyConfigured
erro ao executar o nginx / uwsgi.De qualquer forma, se você deseja instalar a versão mais recente do github, execute:
Você também pode clonar um commit específico fazendo:
fonte
Eu tentei de tudo, desde a configuração
DEBUG = True
, atéINTERNAL_IPS
o endereço IP do meu cliente e até a configuração manual da barra de ferramentas de depuração do Django (observe que versões recentes fazem todas as configurações automaticamente, como adicionar o middleware e URLs). Nada funcionou em um servidor de desenvolvimento remoto (embora funcionasse localmente). A única coisa que funcionou foi configurar a barra de ferramentas da seguinte maneira:Isso substitui o método padrão que decide se a barra de ferramentas deve ser mostrada e sempre retorna true.
fonte
Docker
Se você estiver desenvolvendo com um servidor Django em um contêiner do Docker com janela de encaixe, as instruções para ativar a barra de ferramentas não funcionarão. O motivo está relacionado ao fato de que o endereço real ao qual você precisaria adicionar
INTERNAL_IPS
será algo dinâmico, como 172.24.0.1. Em vez de tentar definir dinamicamente o valor deINTERNAL_IPS
, a solução direta é substituir a função que habilita a barra de ferramentas, no seusettings.py
, por exemplo:Isso também deve funcionar para outras situações de roteamento dinâmico, como vagrant.
Aqui estão mais alguns detalhes para os curiosos. O código em django_debug_tool que determina se deve mostrar a barra de ferramentas examina o valor da
REMOTE_ADDR
seguinte maneira:portanto, se você realmente não souber o valor
REMOTE_ADDR
devido ao roteamento do docker dinâmico, a barra de ferramentas não funcionará. Você pode usar o comando docker network para ver os valores IP dinâmicos, por exemplodocker network inspect my_docker_network_name
fonte
Eu tenho a barra de ferramentas funcionando perfeitamente. Com estas configurações:
DEBUG = True
INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
MIDDLEWARE_CLASSES
:Espero que ajude
fonte
base.py
que você pode querer adicionar isso ao seulocal.py
:MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE_CLASSES
.Adicione
10.0.2.2
ao seu INTERNAL_IPS no Windows, ele é usado com o vagrant internamenteINTERNAL_IPS = ('10 .0.2.2 ')
Isso deve funcionar.
fonte
Eu tive o mesmo problema e finalmente o resolvi depois de pesquisar no Google.
Em INTERNAL_IPS, você precisa ter o endereço IP do cliente .
fonte
Outra coisa que pode fazer com que a barra de ferramentas permaneça oculta é se ela não conseguir encontrar os arquivos estáticos necessários. Os modelos debug_toolbar usam a tag de modelo {{STATIC_URL}}, portanto, verifique se há uma pasta em seus arquivos estáticos chamada barra de ferramentas de depuração.
O comando de gerenciamento coletivo estático deve cuidar disso na maioria das instalações.
fonte
Eu tentei a configuração do cookiecutter-django do pydanny e funcionou para mim:
Acabei de modificá-lo adicionando, em
'debug_toolbar.apps.DebugToolbarConfig'
vez do'debug_toolbar'
mencionado nos documentos oficiais do django-debug-toolbar , como estou usando o Django 1.7.fonte
Um acréscimo às respostas anteriores:
se a barra de ferramentas não aparecer, mas carregar no html (verifique o html do site em um navegador, role para baixo)
o problema pode ser que os arquivos estáticos da barra de ferramentas de depuração não foram encontrados (você também pode ver isso nos logs de acesso do seu site, por exemplo, erros 404 para /static/debug_toolbar/js/toolbar.js)
Pode ser corrigido da seguinte maneira (exemplos para nginx e apache):
configuração nginx:
configuração do apache:
Ou:
mais sobre collectstatic aqui: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#collectstatic
Ou mova manualmente a pasta debug_toolbar dos arquivos estáticos debug_toolbar para a pasta de arquivos estáticos definida
fonte
No meu caso, foi outro problema que ainda não foi mencionado aqui: eu tinha o GZipMiddleware na minha lista de middlewares.
Como a configuração automática da barra de ferramentas de depuração coloca o middleware da barra de ferramentas de debug no topo, ele apenas "vê" o HTML compactado com gzip, ao qual não pode adicionar a barra de ferramentas.
Eu removi o GZipMiddleware nas minhas configurações de desenvolvimento. Definir a configuração da barra de ferramentas de depuração manualmente e colocar o middleware após o GZip também deve funcionar.
fonte
gzip_page
faz com que a barra de ferramentas desapareça. docs.djangoproject.com/en/2.0/topics/http/decorators/…No meu caso, eu só precisava remover os arquivos compilados python (
*.pyc
)fonte
django 1.8.5:
Eu tive que adicionar o seguinte ao arquivo url.py do projeto para obter a exibição da barra de ferramentas de depuração. Depois que a barra de ferramentas de depuração é exibida.
django 1.10: e superior:
Além disso, não esqueça de incluir o debug_toolbar no seu middleware. A barra de ferramentas Debug é implementada principalmente em um middleware. Habilite-o no seu módulo de configurações da seguinte maneira: (versões mais recentes do django)
Middleware à moda antiga: (é necessário ter o teclado _CLASSES no Middleware)
fonte
Este não foi o caso deste autor específico, mas eu apenas tenho lutado com a barra de ferramentas Debug que não aparece e depois de fazer tudo o que eles apontaram, descobri que havia um problema com a ordem do MIDDLEWARE. Portanto, colocar o middleware no início da lista poderia funcionar. A minha é a primeira:
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', )
fonte
você precisa garantir que exista uma tag de fechamento nos seus modelos.
Meu problema é que não há tags html regulares nos meus modelos, apenas exibo o conteúdo em texto sem formatação. Eu o resolvi herdando todos os arquivos html de base.html, que possui uma tag.
fonte
Para mim, isso foi tão simples quanto digitar
127.0.0.1:8000
na barra de endereços, e nãolocalhost:8000
aparentemente não corresponder ao INTERNAL_IPS.fonte
Eu tenho o mesmo problema, resolvi-o olhando o log de erros do Apache. Eu peguei o apache rodando no mac os x com mod_wsgi A pasta tamplete do debug_toolbar não estava sendo carregada
Amostra de log:
Acabei de adicionar esta linha ao meu arquivo VirtualHost:
fonte
Eu tive o mesmo problema usando o Vagrant. Resolvi esse problema adicionando
::ffff:192.168.33.1
ao INTERNAL_IPS como exemplo abaixo.Lembrando que
192.168.33.10
é o IP da minha rede privada no Vagrantfile.fonte
Eu tive esse problema e tive que instalar a barra de ferramentas de depuração da fonte.
A versão 1.4 tem um problema em que está oculto se você usar o PureCSS e aparentemente outras estruturas CSS.
Este é o commit que corrige isso.
Os documentos explicam como instalar a partir do código-fonte.
fonte
Para quem estiver usando a depuração do modelo Pycharm 5, não está funcionando em algumas versões. Corrigido no 5.0.4, versões afetadas - 5.0.1, 5.0.2 Verificar problema
Passe muito tempo para descobrir isso. Talvez ajude alguém
fonte
No código em que eu estava trabalhando, várias pequenas solicitações foram feitas durante o tratamento da solicitação principal (é um caso de uso muito específico). Eles foram pedidos tratados pelo mesmo thread do Django. A barra de ferramentas de depuração do Django (DjDT) não espera esse comportamento e inclui as barras de ferramentas do DjDT na primeira resposta e, em seguida, remove seu estado para o encadeamento. Portanto, quando a solicitação principal foi enviada de volta ao navegador, o DjDT não foi incluído na resposta.
Lições aprendidas: O DjDT salva seu estado por thread. Remove o estado de um encadeamento após a primeira resposta.
fonte
O que me pegou é um navegador desatualizado!
Percebeu que ele carrega algumas folhas de estilo da barra de ferramentas de depuração e imaginou que poderia ser um problema de front-end.
fonte
Eu sei que essa pergunta é um pouco antiga, mas hoje eu instalei o django-toolbar com o docker e me deparei com o mesmo problema, isso resolveu para mim
Como li em um comentário, o problema é que o docker usa um ip dinâmico. Para resolver isso, podemos obter o ip do código acima
fonte
Uma coisa estúpida me entendeu: se você usar o apache wsgi, lembre-se de tocar no arquivo .wsgi para forçar a recompilação do código. desperdice 20 minutos do meu tempo para depurar o erro estúpido :(
fonte