Преобразование обсуждения из комментариев здесь:
В общем, вы хотите использовать представленные Django виды, обеспечиваемые батареями, перед тем, как развернуть свои собственные, и даже перед тем, как свернуть свои собственные с самого начала,хотите наследовать и расширять представления Django, такие как LoginView .
Тот же принцип применяется к (хорошо спроектированным) внешним библиотекам, таким как связанные django-two-factor-auth
.
Сначала вы просто используете представленные в нем представления, вероятно, напрямую include()
с помощью модуля urls
.
Затем, если вам нужно что-то настроить в этих представленияхвы бы унаследовали это представление, например,
from two_factor.views import LoginView
class MyLoginView(LoginView):
template_name = 'super_fancy_login_template.html'
form_list = (
('auth', MyAwesomeAuthenticationForm),
# ... the rest from the original here ...
)
и подключили его в своем urls
до представления, предоставленного библиотекой, по тому же пути:
from django.conf.urls import url
from my_awesome_app.views import MyLoginView
urlpatterns = [
url(
regex=r'^account/login/$',
view=MyLoginView.as_view(),
name='login',
),
include(...),
]
и эй presto, вы заменили представление своим собственным.
Очевидно, что чем больше вы заменяете такие детали, тем меньше у вас будет никаких «гарантий» (не то, что приходит программное обеспечение с открытым исходным кодом).с гарантией вообще;)) что делапо-прежнему работать, как они должны.