使用 django-allauth 和脆皮形式隐藏表单标签

问题描述

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

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

enter image description here

提前致谢。

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

settings.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,**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 不起作用?

解决方法

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

.requiredField{
  display: none;
}

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...