Django перестает работать инфраструктура разрешения URL - PullRequest
2 голосов
/ 27 мая 2010

Недавно мы запустили новый веб-сайт на платформе Django, и у нас возникла самая странная ошибка:

Сайт работает под Apache с mod_fastcgi.Некоторое время все работает нормально, а затем перестает работать функция URL-тега и reverse ().Вместо возврата ожидаемого URL они возвращают "".

Мы ничего не заметили в лог-файле Apache;нет никаких ошибок, генерируемых Django.И (кикер) проблема возникает только в производственном режиме;мы не можем воспроизвести его, когда DEBUG = True.

Есть мысли о том, где мы должны искать проблему?

Обновление : Оказалось, что проблема с настройками. ЯЗЫКИ, хотя мы не определилиточно почему что сломало вещи.

Ответы [ 2 ]

7 голосов
/ 02 июня 2010

Это случилось со мной раньше. Обычно это происходит из-за «сломанного» файла urls.py. Есть две вещи, которые делают эту ошибку действительно трудно исправить:

  • Это может быть файл urls.py в любом приложений, который нарушает функцию reverse (), поэтому знание того, что reverse () прерывает приложение X, не означает, что ошибка именно в этом конкретном случае. URL приложения.py.
  • Django даже не уведомит вас об ошибках в файле urls.py, если вам не удастся каким-то образом рухнуть на сайте, сделав что-то действительно очень неприятное в файле urls.py.

Отладка: Я исправляю это путем ручного отключения всех приложений (просто закомментируйте их строку в INSTALLED_APPS) и проверки работоспособности reverse (). Если это все еще работает, то я включаю следующее приложение, пока оно не сломается. Я знаю, очень элементарные вещи, но это работает :)

2 голосов
/ 02 июня 2010

У Django странное поведение при сопоставлении URL-адресов в среде, которая не находится в режиме отладки.

Например, если DEBUG = False, Django будет игнорировать URL-адреса, такие как:

url (r '^', include ('someapp.urls')),

в частности, в приведенном выше случае вы можете оставить строку пустой:

url (r '', include ('someapp.urls')),

Другими словами, проверьте свои регулярные выражения.

Можете ли вы поместить свой urls.py здесь для анализа?

...