Кнопка запомнить в AuthenticationForm

Имеется такой код:

class LoginUserForm(AuthenticationForm):
username = forms.CharField(label='Логин', widget=forms.TextInput(attrs={'class': 'form-input', 'placeholder': 'Username'}))
password = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={'class': 'form-input', 'placeholder': 'Password'}))
...
class LoginUser(DataMixin, LoginView):
form_class = LoginUserForm
template_name = 'iviolations/login.html'

def get_context_data(self, *, object_list=None, **kwargs):
    context = super().get_context_data(**kwargs)
    c_def = self.get_user_context(title="Авторизация")
    return dict(list(context.items()) + list(c_def.items()))

def get_success_url(self):
    return reverse_lazy('home')
...
 <form method="post">
        {% csrf_token %}
    
        <div class="form-error">{{ form.non_field_errors }}</div>
        
        {% for f in form %}
        <label class="form-label" for="{{ f.id_for_label }}"></label>{{ f }}
        <div class="form-error">{{ f.errors }}</div>
        {% endfor %}
    
        <button type="submit">Войти</button>
    </form> 

Как добавить кнопку запомнить?


Ответы (1 шт):

Автор решения: amadou sow

forms.py

class LoginUserForm(AuthenticationForm):
    username = forms.CharField(label='Логин', widget=forms.TextInput(attrs={'class': 'form-input', 'placeholder': 'Username'}))
    password = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={'class': 'form-input', 'placeholder': 'Password'}))
    ...
    remember_me = forms.BooleanField() #новый

views.py.

class LoginUser(DataMixin, LoginView):
    form_class = LoginUserForm
    template_name = 'iviolations/login.html'

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        c_def = self.get_user_context(title="Авторизация")
        return dict(list(context.items()) + list(c_def.items()))

    def get_success_url(self):
        return reverse_lazy('home')

    def form_valid(self, form):
       
        remember_me = form.cleaned_data['remember_me']  
        if not remember_me:
            self.request.session.set_expiry(0)  
            self.request.session.modified = True
        return super(LoginUser, self).form_valid(form)

Это просто идея как вы можете это сделать.

в settings.py добавите это:

LOGIN_REDIRECT_URL = 'home'
→ Ссылка