我使用 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不起作用?
