django.template.exceptions.TemplateDoesNotExist: registration/login.html

2024年6月23日

エラーの原因は、Djangoがデフォルトで探すログインテンプレートが見つからないことです。Djangoのデフォルトでは、ログインビューは registration/login.html を使用しますが、これが見つからないためにエラーが発生しています。

対応策としては、以下のいずれかの方法を選択できます:

  1. デフォルトテンプレートの作成:
    registration フォルダをプロジェクトのテンプレートディレクトリに作成し、その中に login.html を配置してください。プロジェクトのルートディレクトリに templates フォルダがない場合は、作成してください。

    markdown
    your_project/
    ├── your_project/
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── ...
    ├── templates/
    │   └── registration/
    │       └── login.html
    └── ...
    
  2. ログインビューでテンプレート名を指定する:
    ログインビューで使用するテンプレート名を明示的に指定します。先程の CustomLoginView を以下のように修正します。

    python
    # views.py
    from django.contrib.auth.views import LoginView
    from django.shortcuts import render
    
    def home(request):
        return render(request, 'home.html')
    
    class CustomLoginView(LoginView):
        template_name = 'your_app/login.html'  # あなたのアプリケーション名を使ってパスを指定
    

    そして、この your_app/login.html を作成し、ログインフォームのカスタマイズを行います。

どちらかの方法でエラーが解消されるはずです。お好みの方法を選んで試してみてください。

未分類

Posted by ぼっち