2011-07-27 12 views
9

Zainstalowałem ostatnio django-debug-toolbar. Pasek narzędzi działa i widzę zakładki z boku. Jednak nic nie pokazuje się w zakładce SQL nawet gdy mam oczywiście wykonywane zapytanie SQL (takie jak w admin): enter image description herePasek narzędzi Django Debug nie wyświetlający SQL

Kim są następujące ustawienia:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2' 
     'NAME': 'mydatabase' 
     .... 
    } 
} 

# Backwards compatability with apps 
DATABASE_ENGINE = DATABASES['default']['ENGINE'].split('.')[-1] 
DATABASE_NAME = DATABASES['default']['NAME'] 

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', 
'debug_toolbar.middleware.DebugToolbarMiddleware', 
) 

INSTALLED_APPS = (
    ... 
    'debug_toolbar', 
    ... 
) 

# Settings for the django-debug-toolbar 
DEBUG_TOOLBAR_PANELS = (
    'debug_toolbar.panels.version.VersionDebugPanel', 
    'debug_toolbar.panels.cache.CacheDebugPanel', 
    'debug_toolbar.panels.timer.TimerDebugPanel', 
    'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel', 
    'debug_toolbar.panels.headers.HeaderDebugPanel', 
    'debug_toolbar.panels.request_vars.RequestVarsDebugPanel', 
    'debug_toolbar.panels.template.TemplateDebugPanel', 
    'debug_toolbar.panels.sql.SQLDebugPanel', 
    'debug_toolbar.panels.signals.SignalDebugPanel', 
    # 'debug_toolbar.panels.logger.LoggingPanel', 
) 

def custom_show_toolbar(request): 
    return request.user.is_staff 

DEBUG_TOOLBAR_CONFIG = { 
    'INTERCEPT_REDIRECTS':False, 
    'SHOW_TOOLBAR_CALLBACK':custom_show_toolbar, 
    'SHOW_TEMPLATE_CONTEXT':True, 
    'HIDE_DJANGO_SQL':False, 
} 

używam Django 1.3 z Toolbar w wersji 0.8.5. Każda pomoc z tym problemem byłoby super ...

Edit: Na podstawie odpowiedzi, zdecydowałem się pisać jak ja obchodzenia moim zdaniem funkcje:

def func1(query, var1): 
    query = query.filter(var__icontains=var1) 
    return query 

def func2(query, var2): 
    query = query.filter(var__icontains=var2) 
    return query 

def parse(**kwargs): 
    # Based on some logic call func1 and func2 
    return query 

def view(request, template="display.html"): 
    # Do some request processing 
    query = parse(request.GET.items()) 
    return render(request, template, { 'items':list(query) }) 
+0

Jaką wersję python? Jaki system operacyjny? –

+0

Python2.7 na serwerze CentOS. Przepraszamy za przedłużoną przerwę ... – banerjs

Odpowiedz

2

po prostu znaleźć sposób:

  • prawym przyciskiem myszy na "default"
  • kliknij Zbadaj element
  • znaleźć pobliski stolik, który ma style = "display: none"
  • edytować atrybut stylu, aby go usunąć

Nie wiem, dlaczego muszę to wszystko zrobić ...

+0

czekaj, mówisz, że SQL jest rzeczywiście na stronie przez cały czas, ale ukryty? –

+0

Absolutnie! Czy to nie jest bum? – jpic

5

upewnij się, że jesteś uruchamianie twojego SQL w tym samym wątku, który obsługiwał żądanie.

Pasek narzędzi debugowania Django wydaje się tylko patrzeć na instrukcje SQL, które są uruchomione w bieżącym wątku i zakłada, że ​​są one jedynymi, które są związane z żądaniem, które zostało obsłużone.

+0

Czy możesz mi pokazać, w jaki sposób to zagwarantuję? Czy istnieje moduł Pythona, którego mogę użyć do tego? Używam tego na współdzielonym serwerze hostingowym, stąd wiele elementów wewnętrznych jest ode mnie wyodrębnionych ... – banerjs

+0

O ile nie uruchomisz bezpośrednio wątków pythona wewnątrz kodu, a następnie uruchomisz zapytania SQL z tych wątków, będziesz w tym samym wątku który obsługuje żądanie. –

+0

Podam, jak działają niektóre z moich funkcji widoku. Czy ten format powoduje, że django tworzy nowe wątki? Ponadto pasek narzędzi nie pokazuje żadnych zapytań SQL w interfejsie administratora. Dzięki za całą pomoc i przepraszam, że zajęło mi to tyle czasu, aby odpowiedzieć ... – banerjs

4

Mam ten sam problem i znalazłem rozwiązanie w moim przypadku. Używam Pythona 2.5 w systemie Windows Vista. Są 2 problemy.

Najpierw funkcja "format" obsługiwana przez Pythona 2.6 jest używana w module debug_toolbar.panels.sql. Naprawiłem to za pomocą operatora "%" (wiersz 194).

stacktrace.append('<span class="path">%s/</span><span class="file">%s</span> in <span class="func">%s</span>(<span class="lineno">%s</span>)\n <span class="code">%s</span>"' % (params[0], params[1], params[3], params[2], params[4]))

Po drugie, w tym samym module, znak '/' jest używane jako znak separacji. Z tego powodu nie działa w systemie Windows. Zmieniłem charakter separacji i poszło dobrze.

+0

Dzięki. Przepraszam za przedłużoną przerwę, ale ja działałem na serwerze CentOS ... – banerjs

1

Ten pracował dla mnie:

pip install django-debug-toolbar==0.9.4 

Upewnij się także:

  • DEBUG = True
  • Middleware jest po koderów i przed Flatpage na

jestem późno dla nielicznych lat, ale wciąż są ludzie z Django 1.3 :(

Powiązane problemy