问题描述
我有一个自定义的脆皮登录表单,它覆盖了基本的 allauth 登录表单,纯粹是为了向字段添加前置图标,而无需对所有 html 进行硬编码。表单在页面上的结构呈现良好,但样式明智,它缺少我为表单传递的自定义 css 类。下面的表单对象
from allauth.account.forms import LoginForm
from crispy_forms.bootstrap import PrependedText
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML,Div,Field,Layout,Submit
from django import forms
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
class CustomLoginForm(LoginForm):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.fields["remember_me"] = forms.BooleanField(required=False)
self.helper = FormHelper(self)
self.helper.form_show_labels = False
self.helper.layout = Layout(
Field(
PrependedText(
"login",mark_safe('<i class="ni ni-email-83"></i>'),placeholder=_("Email"),autofocus="",),css_class="input-group input-group-merge input-group-alternative mb-3",Field(
PrependedText(
"password",mark_safe('<i class="ni ni-lock-circle-open"></i>'),placeholder=_("Password"),css_class="input-group input-group-merge input-group-alternative",HTML(
f"""
<small>
damn!
<a class="button secondaryAction mt--10"
href="{reverse('account_reset_password')}">
{_("forgot password")}
</a>
</small>
"""
),RememberMeCheckBox("remember_me"),Div(Submit("submit","Log in"),css_class="text-center mt-10"),)
我知道表单是从这里渲染的,因为我可以看到该死的!忘记了表单中的密码文本(这不是库存标准)。在我的实际模板中:
{% load crispy_form_tags %}
和
<div class="card-body px-lg-5 py-lg-5">
<div class="text-center text-muted mb-4">
<small>{% trans "Or sign in with credentials" %}</small>
</div>
{% crispy form %}
</div>
风格明智,我可以看出页面的其余部分正在加载 css 文件。主要问题是;在检查渲染元素时,我实际上在对象中没有上述自定义 css 类。即我希望看到
"input-group input-group-merge input-group-alternative mb-3"
在其中一个 div 中,但它不在那里 :(
<div id="div_id_login" class="form-group">
<div class="">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="ni ni-email-83"></i>
</span>
</div>
<input type="email" name="login" placeholder="Email" autocomplete="email" autofocus="" class="textinput textInput form-control" required="" id="id_login">
</div>
</div>
</div>
在我的设置文件中
INSTALLED_APPS = [
"django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.sites",# required by django-allauth
"django.contrib.staticfiles","corsheaders","app.users.apps.UsersConfig","allauth","allauth.account","allauth.socialaccount","django_extensions","allauth.socialaccount.providers.facebook","allauth.socialaccount.providers.google","graphene_django","polymorphic","crispy_forms","djmoney",]
CRISPY_TEMPLATE_PACK = 'bootstrap4'
ACCOUNT_FORMS = {
"signup": "app.users.forms.CustomSignupForm","login": "app.users.forms.CustomLoginForm"
}
有人有什么想法吗?我现在有点撞墙了。 提前感谢您的时间!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)