问题描述
我使用 django-allauth 和脆皮表单来自定义我的登录表单。一切正常,没有任何问题。唯一的问题是我无法隐藏表单标签。
我不想使用 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
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;
}
请注意,在未来的脆皮表单中可能会更改类,因此在每次更新脆皮表单时,请检查浏览器检查器中的类。