I've been playing around with django, building a toy app just to get
the feel of it.  I've been going nuts trying to figure out why my
index method has been getting called in all sort of places I didn't
expect.  I finally figured it out and thought I would share this with
the group (hopefully to prevent other django newbies from making the
same mistake).

I had a catch-all url defined:

urlpatterns = patterns('',
    (r'^db/query/mn_id/', 'db.views.query_nm_id'),
    (r'^db', 'db.views.index'),
    (r'', 'db.views.index'),
)

I was seeing index() being called twice when I did a GET on "/db", and
if I did a GET on "/db/query/mn_id", I'd see query_mn_id() get called,
followed by a call to index().  It turns out the second GET in both
cases was my browser (Chrome on OSX) asking for "/favicon"!  Duh.

The clue that set me on the right path was that if I reloaded the page
with the "Reload this page" button, I got the behavior described
above, but if I navigated my history with the back and forward arrows,
I didn't get the extra call to index().    I little sleuthing with
tcpdump showed what was going on, and logging request.get_full_path()
in each view method verified this.

What's really weird is that the /favicon GET isn't logged by
development server (python manage.py runserver).  For example,
runserver prints just:

[28/Nov/2010 09:36:57] "GET /db/query/ HTTP/1.1" 200 5

but I see in my application log:

DEBUG:root:/db/query/
DEBUG:root:/favicon.ico

Why don't both requests get printed?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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.

Reply via email to