python - Django Forms(带有酥脆的表格)-我是否过于复杂了?有没有更简单的方法?
问题描述
我已经在 Django 中使用清晰的表单创建了一个表单,它工作正常,但我可以通过查看它来判断我很可能过度设计了它。这是很多非常相似的代码。
我应该怎么做?我想有一个更好的方法。
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'),
),
)
真正添加到代码中的主要部分是每个占位符都必须有一行。它只是看起来有点乱,虽然我接受它比写出所有的 html 更容易。
谢谢!
解决方案
推荐阅读
- javascript - Prettier 和 EsLint 选项卡问题 - Vue 中的好奇登录
- python - 如何在箱线图中放置多个中值?
- arrays - 结构分配的矢量化
- c# - 在 Startup.ConfigureServices 方法期间访问依赖注入对象
- python - 每次按下按钮时,如何从列表中随机生成一个新项目?
- python - python - 如何使python乌龟中的形状不重叠?
- jquery - 固定 div 后的粘性 div
- javascript - 我如何让一系列图像出现在我的反应屏幕上?
- javascript - 如何解决这个“解析和平衡尖括号”问题?(Javascript)
- c - 如何调试运行时库插入的进程?