Django - 在模板中呈现日期字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - 在模板中呈现日期字段相关的知识,希望对你有一定的参考价值。
我正在处理一个用于存储学生数据的表单。当我尝试渲染表单时,它会生成文本输入而不是数据。
如何使用django渲染日期输入
forms.朋友
class StudentRegister(forms.Form):
firstname = forms.CharField(max_length= 50)
lastname = forms.CharField(max_length = 50, required=False)
mail = forms.EmailField(required=False)
dob = forms.DateField()
{{form.dob}}
{{form.dob.error}}
答案
默认情况下,Django将显示TextInput
字段,您可以覆盖您的表单以显示DateField
..
class DateInput(forms.DateInput):
input_type = 'date'
class StudentRegisterForm(ModelForm):
class Meta:
model = StudentRegister
fields = '__all__'
widgets = {
'dob': DateInput()
}
另一答案
from django.forms import SelectDateWidget
# from django.forms.extras.widgets Django < 1.9
from django.utils import timezone
def past_years(ago):
this_year = timezone.now().year
return list(range(this_year, this_year - ago - 1))
class StudentRegisterForm(forms.Form):
...
dob = DateField(widget=SelectDateWidget(years=past_years(100))
另一答案
弗拉基米尔·达尼洛夫先前的回复只是一个小小的修正
from django.forms import SelectDateWidget
# from django.forms.extras.widgets Django < 1.9
from django.utils import timezone
def past_years(ago):
this_year = timezone.now().year
return list(range(this_year-ago-1, this_year)) #<------- Parameters should be inverted here
class StudentRegisterForm(forms.Form):
dob = DateField(widget=SelectDateWidget(years=past_years(100))
以上是关于Django - 在模板中呈现日期字段的主要内容,如果未能解决你的问题,请参考以下文章