Използвам Django 1.2.3-3+squeeze1
с Debian squeeze.
Опитвам се да използвам изгледа за промяна на паролата на Django в моето приложение, съответстващо на django.contrib.auth.views.password_change
. Изглежда, че трябва да е ясно, но имам проблеми.
За простота и изчерпателност ще посоча файловете си за кандидатстване онлайн. Приложението е bixfile. Съответният Django проект е bixproj.
Съответният ред в url.py е https://bitbucket.org/faheem/bixfile/src/49bcbab3a7be/urls.py#cl-65, а именно
url(r'^password_change/$', 'django.contrib.auth.views.password_change', {'post_change_redirect':reverse('top_folders')}, name="password_change"),
Това прекъсва всеки шаблон, в който се използва. В момента го използвам само на ред https://bitbucket.org/faheem/bixfile/src/71de33d01f43/templates/calgb_base.html#cl-21 на шаблона calgb_base.html, който е включен в куп шаблони, включително изглед на индекс от най-високо ниво, съответстващ на шаблонът https://bitbucket.org/faheem/bixfile/src/71de33d01f43/templates/index.html. Редът в calgb_base.html е
<li><a class="side" href="/bg{% url password_change %}">Password Change</a></li>
Когато навигирам до горния index
изглед, съответстващ на https://bitbucket.org/faheem/bixfile/src/71de33d01f43/urls.py#cl-16 и https://bitbucket.org/faheem/bixfile/src/71de33d01f43/views.py#cl-203 Виждам грешка, започваща с
Caught NoReverseMatch while rendering: Reverse for 'password_change'
with arguments '()' and keyword arguments '{}' not found.
Съмнявам се, че пълното проследяване е полезно, но го поставих на http://paste.lisp.org/display/122996.
Тази грешка може да се възпроизведе както с Apache 2.2, така и с mod-wsgi, както и с вградения тестов сървър на Django (вижте по-долу).
Ако отида директно на относителния URL адрес /password_change/, виждам формуляра за промяна на паролата, както се очаква.
Странното е, че всички тестове, които съм написал за тестване, преминават и дават очаквания резултат. Вижте например testIndexUrl , testIndexView и URL_адрес за_промяна_на_парола за тестване.
Можете да стартирате тестовете от директорията bixproj
с
python manage.py test
Ако искате да опитате да възпроизведете тази грешка, това е сравнително лесно.
Първо изтеглете проекта (bixproj
) и хранилищата на приложения (bixfile
). Така
hg clone ssh://[email protected]/faheem/bixproj
hg clone ssh://[email protected]/faheem/bixfile
След това се уверете, че bixfile е в пътя на Python. Променете DATABASES, за да използвате sqlite. След това сменете
LOGIN_URL = '/'+BIXFILE_NAME+'/login/'
LOGIN_REDIRECT_URL= '/'+BIXFILE_NAME+'/'
to
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL= '/'
След това бягане
python manage.py runserver
в директорията bixproj
на локална машина и преминаването към URL адреса по подразбиране http://127.0.0.1:8000/
трябва да покаже грешката.
Очаквам, че мога да създам минимален пример, показващ грешката, ако е необходимо, но наистина се надявам тази грешка да е очевидна и да не се налага. Благодаря предварително.