質問

私のURLconfは、このパターンが含まれています:

url(r'^accounts/logout/$','django.contrib.auth.views.logout', name="logout"),

そして、私はこのようなURLタグをテンプレートにそれを逆にしようとしました。

<a href="{% url logout next_page=request.path %}">logout</a>

しかし、私は次のエラーを得続けるます:

Reverse for 'logout' with arguments '()' and keyword arguments '{'next_page': u'/first-page/child/'}' not found

私はdjango.contrib.auth.views.logoutは、オプションnext_pageパラメータを取ることになっていると思いました。私は何かを明らかに欠けていると確信しているが、私はそれが何であるかわからない。

役に立ちましたか?

解決

はい、あなたしている右、django.contrib.auth.views.logoutオプション「にnext_page」パラメータを受け入れないが、それは認識していないですので、のURLconfパターンではなく、ビューに「URL」タグが一致することを忘れないでくださいあるまたはビューのパラメータではありません何の。これはあなたが行うことができます上記のパターン、正規表現のために「にnext_page」という名前のグループを作成する必要がありますが、ハンドルのリダイレクト...

への簡単な方法がありますことを示唆しているように、

django.contrib.authを見ますの.views.logout、あなたはどのパラメータ、「にnext_page」パラメータが存在しない場合にすることを重要な「redirect_field_name」とrequest.GETやrequest.POSTのいずれかで提供されるものは何でもURLに表示リダイレクトを見ることができます文字列に順番にデフォルトで「REDIRECT_FIELD_NAME」「次」にデフォルト設定されています。だからあなたのURLconfは、あなたのテンプレートでは、このような何かを行うことができ、それは仕方残します:

<a href='{% url logout %}?next={{ request.path }}'>logout</a>

他のヒント

基本的にはDjangoのURLディスパッチャはURLconfのとその引数を見ていると、それはURLが、唯一のURLconfやパターンを指すビュー機能を見ていないので、「この引数をどこに置くか私にはわからない」と言ってその中ます。

今、その引数のためのあなたのURLパターンでない場所がありません。

すなわち。あなたはそれのためにまたはあなたがあなた自身の視点からではなく、デフォルトのURLパターンからそれを呼び出す場合は、独自のパターンを作成する場合は、追加の引数でdjango.contrib.auth.views.logout呼び出すことができます。

これらのURLパターンの一つは(テストしていません)あなたのために働くかもしれません。

url(r'^accounts/logout/(?P<next_page>.*)?$','django.contrib.auth.views.logout', name="logout"),
url(r'^accounts/logout/$','django.contrib.auth.views.logout', kwargs={'next_page':None}, name="logout"),

期待して役立ちます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top