2009-05-26 1 views
0

У меня довольно странная проблема в том смысле, что я не понимаю, что это может быть. Мой сайт использует django-registration, и все работает нормально, но если я перезапущу django dev. сервер в середине сессии (т.е. было зарегистрировано в) я сразу получаю ошибку:Нужен намек на то, что эта ошибка все о

Caught исключение во время рендеринга: Reverse для «объекта django.contrib.auth.decorators._CheckLogin в 0x235aa50» с аргументами «() 'и аргументы ключевого слова' {} 'не найдены.

Еще раз: все работает нормально, если я не перезапускаю dev. сервер. Эта ошибка возникает тогда и только тогда, когда я перезапускаю djange dev. сервер был зарегистрирован на моем сайте.

+0

У вас есть трассировка или дополнительная информация? – Pablo

+0

http://dpaste.com/47828/ Я также задал тот же вопрос в списке почтовых ящиков django: http://groups.google.com/group/django-users/browse_thread/thread/fe6c79dc0e3a55af/327f64743d55e93e – Konstantin

ответ

4

Усовершенствованная функция URL в Django, к сожалению, очень хрупкая. Он работает, импортируя все виды и видя, какие из них соответствуют. Если по какой-то причине он не может импортировать представление - любой вид, прикрепленный к URLconf - тогда полное обратное совпадение не удастся.

Таким образом, иногда в ваших представлениях есть некоторые зависимости, которые означают, что они не могут быть импортированы сразу после перезапуска сервера. Это приводит к сбою всех обратных совпадений URL, даже тех, которые не имеют никакого отношения к представлению с проблемой. Но если вы обновите страницу, вы часто обнаружите, что ошибка уходит.

Ошибка, скорее всего, не в регистрации django, а где-то очень неясно в одном из ваших собственных представлений. Я бы попробовал комментировать все другие URL-адреса, а затем снова включить их один за другим - каждый раз перезапускать сервер dev - чтобы увидеть, когда появляется ошибка.

Смежные вопросы