2016-04-13 17 views
0

私はDjango(v1.8.12)のデフォルト認証システムを使用していますが、私自身のテンプレートを作成したいと思います(実際にはdjango.contrib.authどのテンプレートも提供しないでください)。Django:認証システムのテンプレート検索順序(独自の認証テンプレートを作成する)

次に、私のアプリケーション 'mainApp'の 'templates'フォルダの中に 'registration'というフォルダを追加しました。ドキュメントによると、これは正しい場所、 '登録'という名前のフォルダです。

テンプレート 'login.html'も作成しました。このテンプレートは、定義されたURL '... account/login'に正しく読み込まれています。

問題は、他のテンプレートである:

  • logged_out.html
  • password_change_done.html
  • password_change_form.html
  • password_reset_complete.html
  • password_reset_confirm.html
  • password_reset_done。 html
  • password_reset_email.html
  • password_reset_form.html

前のテンプレートは、私のアプリから「管理」アプリケーションやないからロードされています。

管理アプリケーションで定義されたテンプレートではなく、「登録」テンプレートをロードする必要があることをDjangoに伝えるにはどうすればよいですか?

マイプロジェクトurl.pyは

urlpatterns = [ 
    url(r'^', include('mainApp.urls', namespace="mainApp")), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^account/', include('django.contrib.auth.urls')), 
] 

マイテンプレート設定は、Djangoは最初mainApp/templatesディレクトリを検索するようにするだけ、あなたのINSTALLED_APPS設定でdjango.contrib.admin上記mainAppを移動

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'debug': True, 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 
+0

OK。テンプレート設定でこれを試したところで、 ''DIRS ':[' mainApp/templates ']、' 'を実行しています。とにかく私はあなたが私に与えることができるより一般的なソリューションにオープンしています:)。 – ePi272314

+0

以前の解決策をプロダクションでは動作しません(サーバーでの意味) – ePi272314

答えて

1

デフォルト設定されているされています。

このように、DIRSの設定にmainApp/templatesを追加する必要はありません。

+0

クイックアンサーに感謝します。 私のアプリを 'INSTALLED_APPS'の先頭に追加することに悪影響はありますか? ドキュメントでは、デフォルトのリストの最後に独自のアプリケーションを追加することを推奨しています。 – ePi272314

+0

あなたのアプリのテンプレート、静的ファイルなどが最初に選択されることに気付いている限り、ほとんどの場合は大丈夫です。場合によっては 'admin.site.unregister(User)'を呼び出し、 'User'のために独自のモデル管理者を登録するなど、依存関係の問題があるかもしれません。その場合、アプリケーションは 'django.contrib.auth'の下に移動する必要があります。 – Alasdair