python操作html5日期控件,python – 在WTForms中使用HTML5字段

本文介绍了WTForms框架的核心思想和可扩展性,展示了如何创建自定义模块以整合所需功能,如设置CSRF保护。文章还讨论了WTForms从扩展包分离的决策,以简化维护和提高生态系统多样性。此外,提到了HTML5类型的缺失,并解释了其历史背景。总之,WTForms旨在提供一个基础框架,鼓励用户根据需求进行配置和定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言,我是作者之一,目前是WTForms的主要维护者

在我了解为什么我应该为使用WTForms的人们提到一个非常常见的模式之前,就是创建自己的模块,将所需的所有位组合成一个命名空间.

例如在myapp / forms.py中,您可以执行以下操作:

from wtforms.fields import *

from wtforms import widgets, Form as _Form

from wtforms.fields.html5 import EmailField,

class Form(_Form):

"""Awesome base form for myapp. Includes CSRF by default"""

class Meta:

csrf = True

csrf_secret = 'secretpasswordhere'

@property

def csrf_context(self):

return get_current_request().session

# maybe add some methods you really wanted to have on your Form class

您可以使用以上内容:

from myapp.forms import Form, TextField, EmailField, ...

class UserForm(Form):

name = TextField(...)

email = EmailField(...)

或者像myapp.forms import *一样进行星形导入

您将注意到我还包括一个自定义表单子类,它设置CSRF并默认提供CSRF上下文,这不是绝对必要的. (顺便说一下,如果您使用的是烧瓶,Flask-WTF会为您设置类似的CSRF,但重点是说明如何轻松实现自己的集成.)

现在为什么.

WTForms的核心思想是提出一个非常简单,可靠的框架,适用于大多数用例,但是可扩展性足以让人们可以提供配套工具来处理特定的用例.

在早期,这样做的解决方案是将extensions与各种库互操作合并.但这带来了一个问题,因为它极大地增加了测试的复杂性和表面区域,而且它会以奇怪的方式驱动WTForms版本(Django只是改变了这一点,现在你需要发布一个新的WTForms).所以在2015年,我们决定将所有扩展移动到他们自己的包中,以允许他们自己的发布时间表.

与其强迫人们使用一个试图完成所有事情的单个软件包,这已经形成了一个真正伟大的生态系统,其中包括Flask-WTF,WTForms-Alchemy和WTForms-Django等固体配套软件包.

至于HTML5类型没有记录的原因;好吧,这是一个遗漏.还有一些历史:在某些时候,我们将默认的WTForms字段输出从XHTML样式切换为HTML紧凑语法;但保留了核心领域的产出.因此,我们让人们回馈XHTML表单,人们贡献html5字段,以及希望默认字段使用HTML5类型的人,所有这些都在我们保证在主要版本中的向后兼容性之后,这迫使我们的手.

我知道这是一个很长的答案,也许简短的说法是:虽然WTForms通常可以与大多数Web框架一起使用,但它的设计是根据您的用途进行配置和定制的.一切都不插即用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值