Ошибки в форме с ModelForm

Я не силен в английском

Я хочу иметь страницу входа в систему, я использую ModelForm и LoginView.

Когда я хочу посмотреть страницу, я получаю эту ошибку:

BaseModelForm.__init__() got an unexpected keyword argument 'request'

и когда я не использую форму, всегда возвращаюсь на ту же страницу. Я проверил request.method, это GET!

вот моя форма:

class LoginForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(*args, **kwargs)

    class Meta:
        model = User
        fields = ['username', 'password']

view:

class Login(LoginView):
    form_class = LoginForm
    template_name = 'account/login.html'

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

и login.html

            <form action="{% url 'account:home' %}" method="post">
                {% csrf_token %}
                <div class="input-group mb-3">
                    <input id="username" type="text" class="form-control" placeholder="Username">
                    <div class="input-group-append">
                        <div class="input-group-text">
                            <span class="fas fa-user"></span>
                        </div>
                    </div>
                </div>
                <div class="input-group mb-3">
                    <input id="password" type="password" class="form-control" placeholder="Password">
                    <div class="input-group-append">
                        <div class="input-group-text">
                            <span class="fas fa-lock"></span>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <!-- /.col -->
                    <div class="col-12">
                        <button type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button>
                    </div>
                    <!-- /.col -->
                </div>
            </form>

Когда я использую свою форму (с функциональным видом), мой браузер не предлагает мои сохраненные логины.

В LoginView есть небольшая сложность: он передает запрос форме, чтобы ModelForm войти в пользователя, который нужно удалить из kwargs в супервызове, как:

class LoginForm(ModelForm):
    def __init__(self, *args, request=None, **kwargs):
        super().__init__(*args, **kwargs)

    class Meta:
        model = User
        fields = ['username', 'password']

В настоящее время ваш LoginForm, конечно, не войдет в систему пользователя и, следовательно, мало что сделает.


Note: Since PEP-3135 [pep], you don't need to call super(…) with parameters if the first parameter is the class in which you define the method, and the second is the first parameter (usually self) of the function.

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