2016-02-02 21 views
6

私は組み込みのdjangoログインとログアウトを使用しています。私のProject/urls.pyでは、ログインとログアウトの両方にurlを追加しました。djangoの登録でlogged_out.htmlが上書きされないのはなぜですか?

from django.conf.urls import include, url 
from account import views 
from django.contrib.auth import views as auth_views 
from django.contrib import admin 
urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^$',views.index,name='Index'), 
    url(r'^accounts/login/$',auth_views.login,name='login'), 
    url(r'^accounts/logout/$',auth_views.logout,name='logout'), 
    url(r'^accounts/register/$',views.register,name='register'), 
    url(r'^accounts/profile/$',views.profile,name='profile'),  
] 

アカウントのアプリフォルダ内にテンプレートフォルダがあります。私はこの

account 
    -templates 
     -registration 
      -login.html 
      -logged_out.html 
      -register.html 
     -rest_html_files 
-rest files 

のようなディレクトリ構造を持っている私は、/ログイン()デフォルトのテンプレートの登録/私のプロジェクトでは正常に動作しているlogin.htmlとし、ログアウト()デフォルトのテンプレートが登録されていることを言ってDjangoのドキュメントを読みましたlogged_out.html引数が指定されていない場合、ログアウトボタン(href = {%url 'logout'%}を持つ)をクリックすると、カスタムログアウトページではなくadmin logoutページにリダイレクトされます。 何が間違っている可能性がありますか?

+0

ビューのコードを投稿できますか? –

+1

この場合、django authを使用しているので、viewは何もする必要はありません。 – rdRahul

答えて

10

django.contrib.adminアプリはまたregistration/logged_out.htmlテンプレートを持っています。

「アカウント」アプリのテンプレートが使用されていることを確認するには、「django.contrib.admin」より「INSTALLED_APPS」の設定がであることを確認してください。それが一致するものが見つかるまで

INSTALLED_APPS = (
    'account', 
    ... 
    'django.contrib.admin', 
    ... 
) 

アプリテンプレートローダはINSTALLED_APPSにアプリケーションを通過し、各アプリのテンプレートディレクトリ。したがって、管理者があなたのアプリの上にある場合、Djangoはあなたのアプリの代わりに管理者のテンプレートを使用します。

+1

@Alasdairに感謝してくれてありがとうございます。しかし、質問をする前に私の頭を叩いてしまいました。私のアプリは、インストールされたアプリにあります。あなたのコメントには、私が知りたいと思っていたnext_page属性が、ログインがオーバーライドされた場合、なぜログアウトが同じように動作しないのかという理由が分かっています。 – rdRahul

+0

あなたのアプリを 'INSTALLED_APPS'にするだけでは不十分です。 ** ** 'django.contrib.admin'の上に**ある必要があります。 adminアプリケーションに 'registration/login.html'テンプレートがないため、現在あなたのログインテンプレートが使用されています。 – Alasdair

+0

おかげさま!!!ありがとうございました。私は早く理解できなかったtrick.sorryをしました。彼らはあなたに答えをアップアップさせていません。;-) – rdRahul

0

次のような、次のページにリダイレクトするように設定することができます

url(r'^accounts/logout/$',auth_views.logout, name='logout', 
          {'next_page': '/path_to_your_page/'}) 

によると:https://docs.djangoproject.com/en/1.9/topics/auth/default/#django.contrib.auth.views.logout

それとも

<a href="{% url 'logout' %}?next=/path_to_the_page"> Logout</a> 
+0

ありがとうkushtrimh!しかし、私はすでにそれを理解していました。私が尋ねるのは、この方法がうまくいかないために起こり得ることです。 – rdRahul

関連する問題