1

我使用 django-allauth 和 crispy forms 来自定义我的登录表单。一切正常,没有任何问题。唯一的问题是我无法隐藏表单标签。

我不想使用 javascript 来隐藏标签字段。能够从python做到这一点会很好。

在此处输入图像描述

先感谢您。

forms.py(覆盖 allauth 登录表单)

from crispy_forms.helper import FormHelper
from allauth.account.forms import LoginForm
from django.contrib.auth.forms import AuthenticationForm
from django import forms


class UserLoginForm(LoginForm):

    def __init__(self, *args, **kwargs):
        super(UserLoginForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_show_labels = False

设置.py

...
ACCOUNT_FORMS = {'login': 'user.forms.UserLoginForm'}
...

lohin.html

{% extends "account/base.html" %}

{% load crispy_forms_tags %}


{% block content %}

<form class="login" method="POST" action="{% url 'account_login' %}">
  {% csrf_token %}

  {{ form|crispy }}

  <a class="..." href="">...</a>
  <button class="..." type="submit">{...</button>
</form>

{% endblock %}

更新

我结束了这样做:

class UserLoginForm(LoginForm):

    def __init__(self, *args, **kwargs):
        super(UserLoginForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_show_labels = False

        self.fields["login"].label = ""
        self.fields["password"].label = ""

但为什么self.helper.form_show_labels = False不起作用?

4

1 回答 1

1

是的,我遇到了同样的问题,我不知道为什么来自脆表单的FormHelper()类不起作用。但我找到了一个解决方案,它是来自 css 的简单解决方案。如果你在浏览器中看到脆表单的检查器,酥脆的表单使用.requiredField类来显示标签。所以,您想使用 css 覆盖该类。

.requiredField{
  display: none;
}

请注意,未来的脆皮表单可能会更改类,因此在每次更新脆皮表单时,请在浏览器检查器中检查类。

于 2021-07-28T08:01:22.810 回答