Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单(带脆表单)-我是否过度复杂化了?有没有更简单的方法?_Python_Html_Django_Django Forms_Django Crispy Forms - Fatal编程技术网

Python Django表单(带脆表单)-我是否过度复杂化了?有没有更简单的方法?

Python Django表单(带脆表单)-我是否过度复杂化了?有没有更简单的方法?,python,html,django,django-forms,django-crispy-forms,Python,Html,Django,Django Forms,Django Crispy Forms,我在Django使用crispy forms创建了一个表单,它工作得很好,但我可以通过查看它来判断,我很可能是过度设计了它。这是许多非常相似的代码片段 我应该怎么做呢?我想有更好的办法 class New_Contact(forms.Form): title = forms.CharField(label=False, max_length=10,required=False) givenName = forms.CharField(label=False, max_lengt

我在Django使用crispy forms创建了一个表单,它工作得很好,但我可以通过查看它来判断,我很可能是过度设计了它。这是许多非常相似的代码片段

我应该怎么做呢?我想有更好的办法

class New_Contact(forms.Form):

    title = forms.CharField(label=False, max_length=10,required=False)
    givenName = forms.CharField(label=False, max_length=255)
    middleName = forms.CharField(label=False, max_length=255,required=False)
    surname = forms.CharField(label=False, max_length=255)
    jobTitle = forms.CharField(label=False, max_length=255,required=False)
    companyName = forms.CharField(label=False, max_length=255,required=False)
    department = forms.CharField(label=False, max_length=255,required=False)
    businessHomePage = forms.CharField(label=False, max_length=255,required=False)
    assistantName = forms.CharField(label=False, max_length=255,required=False)
    homePhones = forms.CharField(label=False, max_length=255,required=False) # phones
    mobilePhone = forms.CharField(label=False, max_length=255,required=False) # phones
    businessPhones1 = forms.CharField(label=False, max_length=255,required=False) # phones
    businessPhones2 = forms.CharField(label=False, max_length=255,required=False) # phones
    homeAddress = forms.CharField(label=False,required=False,widget=forms.Textarea(attrs={'style': 'height: 8em'})) # addresses
    businessAddress = forms.CharField(label=False,required=False,widget=forms.Textarea(attrs={'style': 'height: 8em'})) # addresses
    emailAddresses1 = forms.CharField(label=False, max_length=255,required=False) # mail
    emailAddresses2 = forms.CharField(label=False, max_length=255,required=False) # mail

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.fields['title'].widget.attrs['placeholder'] = 'Title'
        self.fields['givenName'].widget.attrs['placeholder'] = 'First Name'
        self.fields['middleName'].widget.attrs['placeholder'] = 'Middle Name'
        self.fields['surname'].widget.attrs['placeholder'] = 'Last Name'
        self.fields['mobilePhone'].widget.attrs['placeholder'] = 'Mobile'
        self.fields['homePhones'].widget.attrs['placeholder'] = 'Home Phone'
        self.fields['emailAddresses1'].widget.attrs['placeholder'] = 'Email'
        self.fields['emailAddresses2'].widget.attrs['placeholder'] = 'Email'
        self.fields['homeAddress'].widget.attrs['placeholder'] = 'Address'
        self.fields['companyName'].widget.attrs['placeholder'] = 'Company Name'
        self.fields['department'].widget.attrs['placeholder'] = 'Department'
        self.fields['jobTitle'].widget.attrs['placeholder'] = 'Job Title'
        self.fields['assistantName'].widget.attrs['placeholder'] = 'Assistant Name'
        self.fields['businessHomePage'].widget.attrs['placeholder'] = 'Website'
        self.fields['businessPhones1'].widget.attrs['placeholder'] = 'Phone'
        self.fields['businessPhones2'].widget.attrs['placeholder'] = 'Phone'
        self.fields['businessAddress'].widget.attrs['placeholder'] = 'Address'
        self.helper.layout = Layout(
            HTML("""
                <h3 class="py-2">Personal Details</h3>           
                """),
            Row(
                Field('title', wrapper_class='col-sm-3'),
                Field('givenName', wrapper_class='col-sm-5'),
                Field('middleName', wrapper_class='col-sm-4'),
                Field('surname', wrapper_class='col-sm-12'),
                Field('mobilePhone', wrapper_class='col-sm-6'),
                Field('homePhones', wrapper_class='col-sm-6'),
                Field('emailAddresses1', wrapper_class='col-sm-12'),
                Field('homeAddress', wrapper_class='col-sm-12'),
                ),
            HTML("""
                <h3 class="py-2">Company Details</h3>           
                """),
            Row(
                Field('companyName', wrapper_class='col-sm-12'),
                Field('department', wrapper_class='col-sm-6'),
                Field('jobTitle', wrapper_class='col-sm-6'),
                Field('assistantName', wrapper_class='col-sm-12'),
                Field('businessHomePage', wrapper_class='col-sm-12'),
                Field('businessPhones1', wrapper_class='col-sm-6'),
                Field('businessPhones2', wrapper_class='col-sm-6'),
                Field('emailAdresses2', wrapper_class='col-sm-12'),
                Field('businessAddress', wrapper_class='col-sm-12'),
                ),
            )
class新联系人(forms.Form):
title=forms.CharField(label=False,max_length=10,required=False)
givenName=forms.CharField(标签=False,最大长度=255)
middleName=forms.CharField(label=False,max_length=255,required=False)
姓氏=forms.CharField(标签=False,最大长度=255)
jobTitle=forms.CharField(标签=False,最大长度=255,必需=False)
companyName=forms.CharField(label=False,max_length=255,required=False)
department=forms.CharField(label=False,max_length=255,required=False)
businessHomePage=forms.CharField(label=False,max_length=255,required=False)
assistantName=forms.CharField(label=False,max_length=255,required=False)
homePhones=forms.CharField(label=False,max_length=255,required=False)#电话
mobilePhone=forms.CharField(label=False,max_length=255,required=False)#电话
businessPhones1=forms.CharField(label=False,max_length=255,required=False)#电话
businessPhones2=forms.CharField(label=False,max_length=255,required=False)#电话
homeAddress=forms.CharField(label=False,required=False,widget=forms.Textarea(attrs={'style':'height:8em'}))#地址
businessAddress=forms.CharField(label=False,required=False,widget=forms.Textarea(attrs={'style':'height:8em'}))#地址
emailAddresses1=forms.CharField(label=False,max_length=255,required=False)#邮件
emailAddresses2=forms.CharField(label=False,max_length=255,required=False)#邮件
定义初始化(self,*args,**kwargs):
super()
self.helper=FormHelper()
self.fields['title'].widget.attrs['placeholder']='title'
self.fields['givenName'].widget.attrs['placeholder']='First Name'
self.fields['middleName'].widget.attrs['placeholder']='middleName'
self.fields['Name'].widget.attrs['placeholder']='Last Name'
self.fields['mobilePhone'].widget.attrs['placeholder']='Mobile'
self.fields['homePhones'].widget.attrs['placeholder']='homephone'
self.fields['emailAddresses1'].widget.attrs['placeholder']='Email'
self.fields['emailAddresses2'].widget.attrs['placeholder']='Email'
self.fields['homeAddress'].widget.attrs['placeholder']='Address'
self.fields['companyName'].widget.attrs['placeholder']='companyName'
self.fields['department'].widget.attrs['placeholder']='department'
self.fields['jobTitle'].widget.attrs['placeholder']='Job Title'
self.fields['assistantName'].widget.attrs['placeholder']='assistantName'
self.fields['businessHomePage'].widget.attrs['placeholder']='Website'
self.fields['businessPhones1'].widget.attrs['placeholder']='Phone'
self.fields['businessPhones2'].widget.attrs['placeholder']='Phone'
self.fields['businessAddress'].widget.attrs['placeholder']='Address'
self.helper.layout=布局(
HTML(“”)
个人资料
"""),
划船(
字段('title',wrapper_class='col-sm-3'),
字段('givenName',wrapper_class='col-sm-5'),
字段('middleName',wrapper_class='col-sm-4'),
字段('姓氏',wrapper_class='col-sm-12'),
字段('mobilePhone',wrapper_class='col-sm-6'),
字段('homePhones',wrapper_class='col-sm-6'),
字段('emailAddresses1',wrapper_class='col-sm-12'),
字段('homeAddress',wrapper_class='col-sm-12'),
),
HTML(“”)
公司详情
"""),
划船(
字段('companyName',wrapper_class='col-sm-12'),
字段('department',wrapper_class='col-sm-6'),
字段('jobTitle',wrapper_class='col-sm-6'),
字段('assistantName',wrapper_class='col-sm-12'),
字段('businessHomePage',wrapper_class='col-sm-12'),
字段('businessPhones1',wrapper_class='col-sm-6'),
字段('businessPhones2',wrapper_class='col-sm-6'),
字段('EmailAddressS2',wrapper_class='col-sm-12'),
字段('businessAddress',wrapper_class='col-sm-12'),
),
)
真正添加到代码中的主要部分是每个占位符都必须有一行。它看起来有点乱,尽管我承认这比写出所有的html要容易


谢谢

从表单上看,你似乎在为每个字段添加占位符和类属性,对吗?是的,没错,你可以向表单字段本身添加html属性。我已经设法通过使用widget=forms.TextInput(attrs={'placeholder':'Title')消除了对占位符部分的需要。顺便说一句,你也可以将类添加到字段中,您可以使用小部件将任何html属性添加到字段中,因为表单只是将html呈现到模板中。您可以添加并使用多个属性,如so
attrs={'class':'col-sm-12','placeholder':'Title'}