Plain is headed towards 1.0! Subscribe for development updates →

plain.password

Password authentication for Plain.

Usage

To enable password authentication in your Plain application, add the PasswordLoginView to your urls.py:

# app/urls.py
from plain.urls import path
from plain.passwords.views import PasswordLoginView

urlpatterns = [
    path('login/', PasswordLoginView.as_view(), name='login'),
    # ...
]

This sets up a basic login view where users can authenticate using their username and password.

FAQs

How do I customize the login form?

To customize the login form, you can subclass PasswordLoginForm and override its fields or methods as needed. Then, set the form_class attribute in your PasswordLoginView to use your custom form.

# app/forms.py
from plain.passwords.forms import PasswordLoginForm

class MyCustomLoginForm(PasswordLoginForm):
    # Add custom fields or override methods here
    pass
# app/views.py
from plain.passwords.views import PasswordLoginView
from .forms import MyCustomLoginForm

class MyPasswordLoginView(PasswordLoginView):
    form_class = MyCustomLoginForm

Update your urls.py to use your custom view:

# app/urls.py
from plain.urls import path
from .views import MyPasswordLoginView

urlpatterns = [
    path('login/', MyPasswordLoginView.as_view(), name='login'),
    # ...
]
 1from plain.urls import Router, path
 2
 3from . import views
 4
 5
 6class PasswordsRouter(Router):
 7    namespace = "passwords"
 8    urls = [
 9        path("password_change/", views.PasswordChangeView, name="password_change"),
10        path(
11            "password_change/done/",
12            views.PasswordChangeDoneView,
13            name="password_change_done",
14        ),
15        path("password_reset/", views.PasswordResetView, name="password_reset"),
16        path(
17            "password_reset/done/",
18            views.PasswordResetDoneView,
19            name="password_reset_done",
20        ),
21        path(
22            "reset/<uidb64>/<token>/",
23            views.PasswordResetConfirmView,
24            name="password_reset_confirm",
25        ),
26        path(
27            "reset/done/",
28            views.PasswordResetCompleteView,
29            name="password_reset_complete",
30        ),
31    ]