Как django LoginRequiredMixin использует шаблоны. Как мы можем передать context_data в шаблон формы входа в систему

Как django LoginRequiredMixin принимает шаблоны. Я не нашел ничего о том, как он принимает шаблоны.

Я добавил папку account в templates и затем LoginRequiredMixin принимает мой шаблон, но как это работает и как я могу передать контекстные данные в шаблон формы входа

LoginRequiredMixin ничего не отображает. Этот миксин просто перенаправляет на LOGIN_URL, установленный в настройках по умолчанию. Вы можете изменить url непосредственно в классе с помощью этого миксина следующим образом:

class MyView(LoginRequiredMixin, View):
    login_url = '...'

По умолчанию, настройки login_url идут в LoginView из django.contrib.auth.views и используют registration/login.html. Таким образом, вы можете создать login.html в каталоге registration в вашем каталоге шаблонов для переопределения шаблона, используемого по умолчанию, если хотите

Что я сделал, так это передал контекстные данные в LoginRequiredMixin Шаблон показан ниже. Является ли это правильным подходом?

urls.py

path('login_url/', views.CustomLogin.as_view(),name='login'),

views.py

class SettingsPage(LoginRequiredMixin, TemplateView):
      login_url = '/login_url/'

class CustomLogin(TemplateView):
      template_name = 'login.html'

     def get_context_data(self, **kwargs):
         context = super(CustomLogin, self).get_context_data(**kwargs)
         context['redirect_field_name'] = 'next'
         context['redirect_field_value'] = self.request.get_full_path().split('=')[1]
    return context 

login.html

<form class="login form-signin"  method="POST" action="/accounts/login/">
   {% csrf_token %}
   <input type="hidden" name="{{ redirect_field_name }}" value="{{redirect_field_value}}">

   <h4 class="form-signin-heading text-center">Login</h4> 
   <input class="form-control mb-2" type="text" name="login" id="id_login">
   <input class="form-control" type="password" name="password" id="id_password">    
   <button class="btn btn-lg btn-primary btn-block" type="submit" >Login</button>
</form>

Здесь он будет автоматически перенаправлять на redirect_field_value после входа

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