19 django format formatting localization datefield
我有一个带有DateField的表单.现有日期值的格式设置为如下所示:
2009-10-03
我该如何格式化它,使它看起来像这样:
03.10.2009
我找到了一个像这样呈现它的小部件,但验证不允许我输入的值.
Cat*_*lus 37
要显示格式正确的初始字段值,请使用DateInput小部件.要自定义验证,请使用input_formats关键字参数DateField.
为什么你需要同时format和input_formats?
format - 将显示此字段初始值的格式.看到这里.
input_formats- 用于尝试将字符串转换为有效datetime.date对象的格式列表.看到这里.
Che*_*OUA 11
所以最好的格式化解决方案就是"."
{{field.value.day|stringformat:"02d"}}.{{field.value.month|stringformat:"02d"}}.{{field.value.year}}
Run Code Online (Sandbox Code Playgroud)
得到24.05.2010
我添加了stringformat:"02d"以得不到25.5.2010作为输出值.
我发布了一个字段的完整代码来获得一个想法:
<input class="form-control" data-inputmask="'mask':'99.99.9999'" data-toggle="masked" name="{{field.html_name}}" placeholder="{{ field.label }}" {% if field.field.required %}required=""{% endif%} type="text" value="{{field.value.day|stringformat:"02d"}}.{{field.value.month|stringformat:"02d"}}.{{field.value.year}}" " >
Run Code Online (Sandbox Code Playgroud)
我主要将这种格式用于更新(模型)表单(UpdateView类)的现有实例上的日期值.
如果提交更新表单不符合格式,则此解决方案可能会失败
这是通过向settings.py文件添加自定义本地设置来完成的:最重要的部分是DATE_INPUT_FORMATS元组
..
..
USE_L10N = True
..
DATE_INPUT_FORMATS = (
'%d.%m.%Y', '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.2006', '25.10.06'
'%d-%m-%Y', '%d/%m/%Y', '%d/%m/%y', # '25-10-2006', '25/10/2006', '25/10/06'
'%d %b %Y', # '25 Oct 2006',
'%d %B %Y', # '25 October 2006',
)
DATE_FORMAT = 'j F Y'
TIME_FORMAT = 'H:i'
DATETIME_FORMAT = 'j F Y H:i'
YEAR_MONTH_FORMAT = 'F Y'
MONTH_DAY_FORMAT = 'j F'
SHORT_DATE_FORMAT = 'j N Y'
SHORT_DATETIME_FORMAT = 'j N Y H:i'
FIRST_DAY_OF_WEEK = 1
Run Code Online (Sandbox Code Playgroud)
最重要的:
因此,第一个元素的选择在此元组中很重要,因为它定义了更新表单上datefield的现有值的格式
您也可以使用第一种格式在UpdateViews上应用javascript验证.
在django 1.6和1.7上测试过,不知道以前的版本
子类自定义字段如下:
class CustomDateField(forms.DateField):
def __init__(self, *args, **kwargs):
kwargs.setdefault('input_formats', ("%d.%m.%Y",))
super(CustomDateField, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以通过以下方式在模板中显示日期
{{ your_object.date_field.day }}.{{ your_object.date_field.month }}.{{ your_object.date_field.year }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45573 次 |
| 最近记录: |