[英]Custom Django Forms (crispy)
I have a registration form, I'm using crispy.我有一个注册表,我用的是脆皮。 I want to make the input fields look better so I wanted to add a class to each of them but the site only renders the first input field with the class.我想让输入字段看起来更好,所以我想为每个字段添加一个类,但该站点仅使用该类呈现第一个输入字段。 (This is my first django project so I'm pretty new to this) (这是我的第一个 Django 项目,所以我对此很陌生)
Here's my forms.py file:这是我的 forms.py 文件:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
widgets = {
'username': forms.TextInput(attrs={'class': 'form-control input'}),
'email': forms.EmailInput(attrs={'class': 'form-control input'}),
'password1': forms.PasswordInput(attrs={'class': 'form-control input'}),
'password2': forms.PasswordInput(attrs={'class': 'form-control input'}),
}
Here's the template:这是模板:
<div class="sign-up">
<form class="form" method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4, sign-up__header">Join Today</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Sign up</button>
</div>
</form>
</div>
from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Submit, Row, Column class UserRegisterForm(UserCreationForm): email = forms.EmailField() class Meta: model = User fields = ['username', 'email', 'password1', 'password2'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.layout = Layout( Row( Column('username', css_class='form-group col-md-3 mb-0 input'), Column('email', css_class='form-group col-md-3 mb-0 input'), Column('password1', css_class='form-group col-md-3 mb-0 input'), Column('password2', css_class='form-group col-md-3 mb-0 input'), css_class='form-row' ) )
class UserRegisterForm(UserCreationForm): email = forms.EmailField() class Meta: model = User fields = ['username', 'email', 'password1', 'password2'] #override def __init__(self, *args, **kwargs): super(UserRegisterForm, self).__init__(*args, **kwargs) #Custom classok self.fields['username'].widget.attrs['class'] = 'input' self.fields['email'].widget.attrs['class'] = 'input' self.fields['password1'].widget.attrs['class'] = 'input' self.fields['password2'].widget.attrs['class'] = 'input'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.