Создание страницы входа в систему с аутентификацией пользователя и вот что произошло : raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)

Новичок в django. изучаю как создать логин с аутентификацией пользователя .Все работает правильно, но когда я ввожу неправильный пароль для проверки работает ли цикл правильно или нет .Знаю что ошибка из-за неправильного назначения url, но не могу понять как ее решить.

Я использую два приложения одно для входа(name=trevalo_app) и второе для всех (name=MYapp)

trevalo_app/views.py

 from django.shortcuts import render,redirect
 from django.http import *
 from django.contrib.auth import authenticate,login,logout
 from django.contrib import messages
 from  .models import *


 def login_user(request):
     if request.method=='POST':
          username = request.POST['username']
          password = request.POST['password']
          user = authenticate(request, username=username, password=password)
          if user is not None:
            login(request, user)
            return redirect('index')
        
          else:
            messages.success(request,('There was an error in logining. Please Try 
            again...'))
            return redirect('login')

     else:
         return render(request,'login_user.html',{})

MYapp/index.html

 <body>

     {% include 'MYapp/navebar.html' %}
     <center>
         <h1>{{name}}</h1>
     </center>


     <div class="cotainer">
         {% if messages %}
            {% for message in messages %}
              {{message}}
            {% endfor %}
         {% endif %}
    </div>
        {% block content %}


        {% endblock content %}


        {% include 'MYapp/footer.html' %}

 </body>

trevalo_app/urls.py

 from django.urls import path,include
      from . import views


 urlpatterns = [

     path('login_user', views.login_user,name='login_user'),

    
 ]

MYapp/urls.py

  from django.contrib import admin
  from django.urls import path
  from . import views



  urlpatterns = [


      path('', views.index, name ='index'),
      path('footer', views.footer, name ='footer'),
      path('navebar', views.navebar, name ='navebar'), 

  ]

trevalo_app/login_user.html

 {% extends 'MYapp/index.html' %}
 {% block content %}

 <center>

    <h3>login...</h3>
    <hr>
 </center>
 <div class="container container-fluid ">

    <form method=POST action="">
         {% csrf_token %}

       <div class="mb-3">
     
          <label for="exampleInputEmail1" class="form-label"> username</label>
          <input type="text" name='username' class="form-control" 
           placeholder="username" aria-describedby="emailHelp">
        
       </div>
       <div class="mb-3">
            <label for="exampleInputPassword1" class="form-label">Password</label>
            <input type="password" name='password' class="form-control" 
              placeholder="password">
       </div>

 

           <button type="submit" class="btn btn-primary">Submit</button>
     </form>
   </div>





      {% endblock %}

Есть несколько проблем с вашими шаблонами:

  1. Используйте правильную структуру каталогов для шаблонов в ваших приложениях, чтобы Django знал, где их найти:
/ MYapp
   - urls.py
   - views.py
   - ...
   / templates
      / MYapp
         - index.html

/ trevalo_app
  - urls.py
  - views.py
  - ...
  / templates
      / trevalo_app
         - login_user.html
  1. В ваших представлениях передайте правильный путь шаблона в render:
def login_user(request):
     if request.method=='POST':
         ...
     else:
         return render(request,'trevalo_app/login_user.html', {}) # The correct template path

Обратите внимание, что ваш код не работает, потому что вы в своем шаблоне trevalo_app/login_user.html расширяете 'MYapp/index.html'. Чтобы это сработало, вы должны следовать структуре каталогов, которую рекомендует Django, чтобы он мог найти нужный шаблон.

{% extends 'MYapp/index.html' %}
Вернуться на верх