0

1.2.3-3+squeeze1Debian スクイーズでDjango を使用しています。

に対応するアプリケーションで 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"),

これにより、それが使用されているすべてのテンプレートが壊れます。現在、 一連のテンプレートに含まれているテンプレート calgb_base.html のhttps://bitbucket.org/faheem/bixfile/src/71de33d01f43/templates/calgb_base.html#cl-21行でのみ使用しています。テンプレートhttps://bitbucket.org/faheem/bixfile/src/71de33d01f43/templates/index.htmlに対応する最上位のインデックス ビューを含み ます。calgb_base.html の行は

<li><a class="side" href="{% url password_change %}">Password Change</a></li>

https://bitbucket.org/faheem/bixfile/src/71de33d01f43/urls.py#cl-16 および https://bitbucket.org/faheem/bixfile/src/71de33d01f43/viewsに対応するトップindexビュー に移動すると、 .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 テスト サーバー (以下を参照) で再現可能です。

/password_change/ 相対 URL に直接アクセスすると、期待どおりにパスワード変更フォームが表示されます。

奇妙なことに、このパスをテストするために作成したすべてのテストがパスし、期待される結果が生成されます。たとえば 、 testIndexUrltestIndexView 、および test_password_change_urlを参照してください。

bixproj次のコマンドを使用して、ディレクトリからテストを実行できます

python manage.py test

このエラーを再現したい場合は、比較的簡単です。

まず、プロジェクト ( bixproj) とアプリケーション リポジトリ ( ) をダウンロードしますbixfile。そう

hg clone ssh://hg@bitbucket.org/faheem/bixproj
hg clone ssh://hg@bitbucket.org/faheem/bixfile

次に、bixfile が Python パスにあることを確認します。DATABASES を sqlite を使用するように変更します。次に変更

LOGIN_URL = '/'+BIXFILE_NAME+'/login/'
LOGIN_REDIRECT_URL= '/'+BIXFILE_NAME+'/'

LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL= '/'

その後、実行中

python manage.py runserver

ローカル マシンのbixprojディレクトリで、デフォルトの URL に移動すると http://127.0.0.1:8000/、エラーが表示されます。

必要に応じて、エラーを示す最小限の例を作成できると思いますが、このエラーが明白であり、そうする必要がないことを本当に望んでいます。前もって感謝します。

4

1 に答える 1

1

あなたのbixfiles.urls用途reversereverseが呼び出されたときに URL がロードされていないため、これは不可能です。

Django 1.4 には、reverse_lazyこの問題を解決する機能があります。

それまでの間、次のことができます。

  1. プロジェクトに実装reverse_lazyします (変更セット 16121を参照)。
  2. 逆引きを使用する代わりに URL をハードコーディングする
于 2011-06-28T23:16:29.703 に答える