We recently launched a new Django-powered website, and we are experiencing the oddest bug:
The site is running under Apache with mod_fastcgi. Everything works fine for a while, and then the URL tag and reverse() functionality stops working. Instead of returning the expected URL, they return “”.
We haven’t noticed anything in Apache’s log file; there are no errors being generated by Django. And (the kicker) the problem only occurs in production mode; we can’t reproduce it when DEBUG=True.
Any thoughts on where we should be looking for the problem?
Update: It turned out to be a problem with settings.LANGUAGES, although we haven’t determined exactly why that broke things.
This has happened to me before. Normally it’s due to a ‘broken’ urls.py file. There are two things that make this kind of bug really hard to fix:
Debugging: The way I go around fixing this is by manually disabling all applications (just comment out their line in INSTALLED_APPS) and checking reverse() works. If it still works, then I enable the next app, until it breaks. I know, very rudimentary stuff, but it works 🙂