Debugging Django + AJAX

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

Mittwoch 23. Januar 2008, 11:29

Hi,


Ich weiss, dass es generell problematisch ist webanwendungen zu debuggen, aber das finde ich jetzt doch etwas arg.

schaut euch mal folgendes beispiel an:

in der views.py habe ich zwei funktionen, die eine (load_page) wird direkt aufgerufen wenn die URL django_ajax/start aufgerufen wird.
die exception führt zu dem mod_python fehler unten.
die ist zwar nicht sehr aussagekräftig aber immerhin ein sichtbarer fehler.
(warum finde ich da nicht die exception? auch nicht im apache error.log, gibts noch ein log das ich nicht kenne?)

Die zweite funktion wird erreicht wenn die url /django_ajax/ajax_test
aufgerufen wird. das geschieht per javascript: ajax push per YUI.
problem: das programm stoppt einfach an dieser exception. kein sichtbarer fehler.
kann das sein? suche ich an der falschen stelle?
was kann ich tun? keine lust so zu arbeiten!

danke :)

Code: Alles auswählen

from django.shortcuts import render_to_response

def load_page(request):

    raise "DIESE EXCEPTION FÜHRT ZU SICHTBAREN PROBLEMEN"
    
    return render_to_response('django_ajax\\index.html', {})

   
def ajax_test(request):

    raise "DIESE EXCEPTION FÜHRT _NICHT_ ZU SICHTBAREN PROBLEMEN"
    
    # MACHE IRGENDWAS AUF DEM SERVER ...

Code: Alles auswählen

var django_ajax = {
    submit_func_ajax_test: function(uid, status) {
        YAHOO.util.Connect.asyncRequest(
          'GET', '/django_ajax/ajax_test/?data=4711', null);
    },
};

Code: Alles auswählen

MOD_PYTHON ERROR

ProcessId:      6456
Interpreter:    'jonas_pc.dsl'

ServerName:     'jonas_pc.dsl'
DocumentRoot:   'C:/Programme/Apache Software Foundation/Apache2.2/htdocs'

URI:            '/django_ajax/start/'
Location:       '/django_ajax'
Directory:      None
Filename:       'C:/Programme/Apache Software Foundation/Apache2.2/htdocs/django_ajax'
PathInfo:       '/start/'

Phase:          'PythonHandler'
Handler:        'django.core.handlers.modpython'

Traceback (most recent call last):

  File "C:\Python25\lib\site-packages\mod_python\importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "C:\Python25\lib\site-packages\mod_python\importer.py", line 1229, in _process_target
    result = _execute_target(config, req, object, arg)

  File "C:\Python25\lib\site-packages\mod_python\importer.py", line 1128, in _execute_target
    result = object(arg)

  File "C:\Python25\lib\site-packages\django-0.95-py2.5.egg\django\core\handlers\modpython.py", line 163, in handler
    return ModPythonHandler()(req)

  File "C:\Python25\lib\site-packages\django-0.95-py2.5.egg\django\core\handlers\modpython.py", line 136, in __call__
    response = self.get_response(req.uri, request)

  File "C:\Python25\lib\site-packages\django-0.95-py2.5.egg\django\core\handlers\base.py", line 102, in get_response
    return self.get_technical_error_response(request)

  File "C:\Python25\lib\site-packages\django-0.95-py2.5.egg\django\core\handlers\base.py", line 134, in get_technical_error_response
    return debug.technical_500_response(request, *sys.exc_info())

  File "C:\Python25\lib\site-packages\django-0.95-py2.5.egg\django\views\debug.py", line 72, in technical_500_response
    if issubclass(exc_type, TemplateDoesNotExist):

TypeError: issubclass() arg 1 must be a class
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Mittwoch 23. Januar 2008, 13:24

Du darfst keine String Exceptions werfen. Die sind deprecated und Django unterstützt sie nicht.
TUFKAB – the user formerly known as blackbird
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 23. Januar 2008, 15:03

Jona, du bist wohl in Bug #6423 gelaufen. Ansonsten gibt es einige Fälle, wo Fehler außerhalb des generischen 500-Handlers hart durchschlagen. In Ticket #6094 dümpelt schon seit einiger Zeit eine Lösung vor sich hin. Als ich (eibaan) sie ausprobiert hatte, funktionierte es. Inzwischen gab es wohl aber nochmal Probleme, wie ich eben dem Ticket entnommen habe. Vielleicht hift dir der Patch aber dennoch.

Stefan
Antworten