Как применить django-two-factor-auth в пользовательской странице входа?

Я использую Django Двухфакторная аутентификация для безопасного входа в систему администратора. Я ввел OTP Required login для каждого администратора. Теперь я хочу реализовать это для моих обычных пользователей. Если любой пользователь активировал двухфакторную аутентификацию на своем аккаунте, то каждый раз он будет перенаправляться на страницу otp, как пользователи администратора, если двухфакторная не включена, то он будет перенаправляться на страницу моего аккаунта. вот мой вид входа:

def login_view(request):
     username = None
     password = None
     if request.user.is_authenticated:
         return redirect('blog:my-account')
     else:
         if request.method == 'POST':
            username = request.POST.get('username')
            password =request.POST.get('password')

            user = authenticate(request, username=username, password=password)

            if user is not None:
                login(request, user)
                messages.add_message(request, messages.INFO,'Login Sucessfull')
                return redirect('members:user-profile-private')


**urls.py**

 path('login/',views.login_view, name='login'),

Я также хочу знать, как вернуть стандартную страницу входа в систему администратора Django. После внедрения django-two-factor-auth моя страница входа в админку выглядит следующим образом

enter image description here

есть ли способ переделать пользовательскую html-страницу входа в систему двухфакторной аутентификации ???

Просто чтобы показать, как я исправил это в конечном итоге.

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

Поэтому, в свою основную папку шаблонов (см.: https://docs.djangoproject.com/en/3.2/topics/templates/) я добавил следующую папку/файл: [templates]/two_factor/_base.html

Этот файл имеет следующее содержание:

{% extends "admin/base_site.html" %}

{% block extrahead %}
  <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" media="screen">
  <script defer src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script defer src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js"></script>
{% endblock %}

{% block content %}{% endblock %}

По сути, это просто возвращает шаблон к использованию шаблона Django Admin по умолчанию. Однако, поскольку шаблоны 2FA полагаются на Bootstrap 4 (что является действительно глупым дизайнерским решением, если вы спросите меня), я должен был включить соответствующие заголовки.

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