Модификации системы аутентификации Django

Я новичок в системе аутентификации Django и не могу найти правильный метод отладки.

Я хочу создать функцию для обработки запросов на вход в систему, и я сделал необходимые шаги для этого.

  1. created a login url path in main project URLS.py file.

     path('members/', include('django.contrib.auth.urls')),
     path('members/', include('members.urls')),
    
  2. created a login url in members app to point to a function created in views.py

    urlpatterns = [
     path('login/', views.login_user, name='login'),]
    
  3. defined what to do when user comes to specific url

    def login_user(request):
     if request.method == 'POST':
         print('-'*100)
         username = request.POST['username']
         password = request.POST['password']
         user = authenticate(request, username=username, password=password)
         if user is not None:
             login(request, user)
             messages.success(request, ("You are now logged in"))
             return redirect('index')
         else:
             messages.success(request, ("Invalid credentials"))
             return redirect('login')
     return render(request, 'registration/Login.html')
    
  4. I have created a Login Page in templates folder.

    {% extends 'Base.html'%}
    {% block title %}
         Login to the Blog Page
     {% endblock %}
    {% block content%}
    <h1>Members Login</h1>
    <div class="form-group">
    
     <form method="POST" action="">
         {% csrf_token %}
         <div class="mb-3">
             <label for="exampleInputEmail1" class="form-label">User Name</label>
             <input type="text" class="form-control" name = "username">
             <div id="emailHelp" class="form-text">We'll never share your email with 
    anyone else.</div>
           </div>
           <div class="mb-3">
             <label for="exampleInputPassword1" class="form-label">Password</label>
             <input type="password" class="form-control" name="password">
           </div>
         <button type="submit" class="btn btn-primary">Login</button>
      </form>
     <br>
     </div>
    {% endblock %}
    

Теперь, когда я перехожу к /members/login после отправки данных пользователя, утверждение print в методе post не выводится в консоль. Поэтому я подозреваю, что запрос post не перенаправляется на функцию login_user. Может ли кто-нибудь помочь мне определить причину?

Djnago будет запускать представление, которое он первым найдет для пути members/login, а это представление входа в модуль django.contrib.auth. Вы можете поменять порядок представлений местами, чтобы посетить представление login вашего представления:

urlpatterns = [
    path('members/', include('members.urls')),  # 🖘 `members.urls first
    path('members/', include('django.contrib.auth.urls'))
]

Но, возможно, лучше дать вашему представлению другой путь, чтобы избежать путаницы.

Вернуться на верх