簡體   English   中英

自定義 Django 表單(脆)

[英]Custom Django Forms (crispy)

我有一個注冊表,我用的是脆皮。 我想讓輸入字段看起來更好,所以我想為每個字段添加一個類,但該站點僅使用該類呈現第一個輸入字段。 (這是我的第一個 Django 項目,所以我對此很陌生)

這是我的 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'}),

        

    }

這是模板:

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM