📜  DateTimeField – Django 表单

📅  最后修改于: 2022-05-13 01:55:18.870000             🧑  作者: Mango

DateTimeField – Django 表单

Django Forms 中的 DateTimeField 是一个日期字段,用于从用户那里获取日期和时间的输入。此输入的默认小部件是 DateTimeInput。它规范化为: Python datetime.datetime对象。它验证给定值是 datetime.datetime、datetime.date 还是以特定日期时间格式格式化的字符串。
DateTimeField 有一个可选参数:

input_formats :- 用于尝试将字符串转换为有效 datetime.datetime 对象的格式列表。

如果未提供 input_formats 参数,则默认输入格式为:

['%Y-%m-%d %H:%M:%S',    # '2006-10-25 14:30:59'
 '%Y-%m-%d %H:%M',       # '2006-10-25 14:30'
 '%Y-%m-%d',             # '2006-10-25'
 '%m/%d/%Y %H:%M:%S',    # '10/25/2006 14:30:59'
 '%m/%d/%Y %H:%M',       # '10/25/2006 14:30'
 '%m/%d/%Y',             # '10/25/2006'
 '%m/%d/%y %H:%M:%S',    # '10/25/06 14:30:59'
 '%m/%d/%y %H:%M',       # '10/25/06 14:30'
 '%m/%d/%y']             # '10/25/06'

句法

field_name = forms.DateTimeField(**options)

django表单日期时间字段说明

使用示例说明 DateTimeField。考虑一个名为geeks的项目,它有一个名为geeksforgeeks的应用程序。

geeks app的forms.py文件中输入以下代码。

from django import forms
  
# creating a form 
class GeeksForm(forms.Form):
    geeks_field = forms.DateTimeField( )

将极客应用添加到INSTALLED_APPS

# Application definition
  
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'geeks',
]

现在要将这个表单渲染到一个视图中,我们需要一个视图和一个映射到该 URL 的 URL。我们先在geeks app的views.py中创建一个视图,

from django.shortcuts import render
from .forms import GeeksForm
  
# Create your views here.
def home_view(request):
    context = {}
    context['form'] = GeeksForm()
    return render( request, "home.html", context)

在这里,我们从 forms.py 导入该特定表单并在视图中创建它的对象,以便可以在模板中呈现它。
现在,要启动一个 Django 表单,您需要创建 home.html,在其中可以根据需要设计内容。让我们在home.html中创建一个表单。

    {{ form }}     

最后,在 urls.py 中映射到该视图的 URL

from django.urls import path
  
# importing views from views..py
from .views import home_view
  
urlpatterns = [
    path('', home_view ),
]

让我们运行服务器并检查实际发生了什么,运行

Python manage.py runserver

django-datefield-forms

因此,通过将“_”替换为“”来创建geeks_field DateTimeField 。它是从用户输入日期和时间实例的字段。

如何使用 DateTimeField ?

DateTimeField 用于在数据库中输入日期和时间。可以输入日期和时间、提交的最后日期等。到目前为止,我们已经讨论了如何实现 DateTimeField,但是如何在视图中使用它来执行逻辑部分。要执行一些逻辑,我们需要将输入到字段中的值放入Python datetime.datetime 实例中。
在views.py中,

from django.shortcuts import render
from .forms import GeeksForm
  
# Create your views here.
def home_view(request):
    context ={}
    form = GeeksForm()
    context['form']= form
    if request.GET:
        temp = request.GET['geeks_field']
        print(type(temp))
    return render(request, "home.html", context)

让我们在 DateTimeField 中尝试除日期之外的其他内容。

django-datetimefield-forms
所以它只接受日期输入,否则会看到验证错误。现在让我们尝试在该字段中输入一个有效日期。
django-forms-datefield-已验证
可以使用相应的请求字典获取日期数据。如果方法是 GET,则数据将在request.GET中可用,如果是 post,则相应的request.POST 。在上面的示例中,我们有 temp 中的值,我们可以将其用于任何目的。

django-datetime-forms

核心字段参数

核心字段参数是赋予每个字段以应用某些约束或将特定特征赋予特定字段的参数。例如,向 DateTimeField 添加参数required = False将使用户可以将其留空。每个 Field 类构造函数至少采用这些参数。一些 Field 类采用额外的、特定于字段的参数,但应始终接受以下参数:

Field OptionsDescription
requiredBy default, each Field class assumes the value is required, so to make it not required you need to set required=False
labelThe label argument lets you specify the “human-friendly” label for this field. This is used when the Field is displayed in a Form.
label_suffixThe label_suffix argument lets you override the form’s label_suffix on a per-field basis.
widgetThe widget argument lets you specify a Widget class to use when rendering this Field. See Widgets for more information.
help_textThe help_text argument lets you specify descriptive text for this Field. If you provide help_text, it will be displayed next to the Field when the Field is rendered by one of the convenience Form methods.
error_messagesThe error_messages argument lets you override the default messages that the field will raise. Pass in a dictionary with keys matching the error messages you want to override.
validatorsThe validators argument lets you provide a list of validation functions for this field.
localizeThe localize argument enables the localization of form data input, as well as the rendered output.
disabled.The disabled boolean argument, when set to True, disables a form field using the disabled HTML attribute so that it won’t be editable by users.

pener”目标=”_blank”>验证器

validators 参数允许您为该字段提供验证函数列表。本地化localize 参数启用表单数据输入的本地化,以及呈现的输出。禁用。 disabled 布尔参数,当设置为 True 时,使用 disabled HTML 属性禁用表单字段,以便用户无法编辑它。

立即开始您的编码之旅!