On Fri, 2009-05-08 at 11:24 -0700, Kalle wrote: > Hi, > > I'm just started to play with Django, and ran into this problem right > away. > > * I'm using the python script at the bottom to POST to the url. > * I'm using "manage.py runserver" to run my app > * Everything works fine when I'll run my tests with "manage.py test". > > When I set a breakpoint at django/core/handlers/base.py:77 I see that > request.path_info is "http://127.0.0.1:8000/uncaughtexception/drop". > From what I > understand, request.path_info should be "/uncaughtexception/drop" at > that point? > > Since the tests works it must be some error in my setup of runserver. > I can't understand what kind of setting I should use to make django > strip way the host > part of the URL.
[...] > --- test script --- > HOST = "127.0.0.1:8000" > URL = "http://%s/uncaughtexception/drop" % HOST > > h = httplib.HTTPConnection(HOST) > headers = { "Content-Type" : "text/html; charset=utf-8" } > h.request("POST", URL, "apa", headers) This is where the problem lies. The URL you send to the host should not contain the hostname and scheme. That is already implicit in the HTTPConnection object. So your URL variable should be simply "/uncaughtexception/drop/". A rough breakdown of what happens when your webbrowser (or anything speaking HTTP) connects to http://example.com/foo/bar/ is this: (1) Connection opened to example.com, port 80 (2) Down that connection, the client sends GET /foo/bar HTTP/1.1 Host example.com ... (the "..." hides some extra headers that might be sent) Notice that the "GET" request includes the resource to retrieve. It already knows *where* to send it because it's made a network connection. In your case, GET becomes POST and there's a different port number involved, etc, but the point is that single URL encapsulates multiple operations. Now, all this being said, you're potentially making life a little hard for yourself here if you're only wanting to test your views. Django contains a little test client that simulates a browser connection, without requiring you to run a whole separate server and so on. What you're doing isn't necessarily wrong, but if you're unaware of http://docs.djangoproject.com/en/dev/topics/testing/#module-django.test.client you might want to have a quick play with that first. It will make your tests a fair bit simpler. Regards, Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---