WTF还是一名建筑师吗?

在全面披露的情况下,我以“首席”建筑师的身份写这封信(我不禁想到一个大头饰),并且我在职业生涯中的大部分时间都是作为“建筑师”(请注意空中引号)。 老实说,我一直在寻找这个冠军头衔带来的机会。 我认为我的关注主要来自Matrix电影中术语神化

但是实际上,标题可能会引起很多麻烦,并且当您需要扩展组织规模以适应每年两位数的增长时,“架构师”和“架构”可以帮助或损害这一增长过程。 尤其是当从实现/开发过程中删除/隔离体系结构时,我们知道象牙塔体系结构会被杀死。

然而,如今,如果没有平台,一家公司就会破产。 一旦您拥有数量众多的团队,尤其是只专注于已承诺交付成果的敏捷团队,您如何在不引入某种形式的架构(和“架构师”)的情况下培育一个平台?

我已经看到这样做有很多方法。 我曾经参加过“创新架构路线图团队”,“企业架构论坛”,甚至是“共享核心服务团队”。 所有这些都试图建立和促进共同的可重用服务的平台。 回顾过去,每一个的成功与实际功能开发团队的参与程度成正比。

在某些情况下,架构师坐在团队外面,兜售开发项目,并在事情与他们的愿景不符时注入自己的力量。 (读为:最少的团队参与)。 在其他情况下,每个团队中的某些人是建筑团队的受膏成员。 这增加了参与度,但仍然限制了体系结构的影响力(并因此限制了所选人员)。 这不仅不尽如人意,而且还会引起怨恨。 为什么有些人受膏而不是其他人?

考虑一下刚毕业的摇滚巨星开发者。 他或她可能具有破坏性的,出色的建筑见解,因为教条尚未找到。 不幸的是,这也可能意味着他们没有能力将政治领域带入建筑的内部圈子。 架构应该为此遭受痛苦吗? 一定不行。

那么我们该怎么办? 我建议我们改变架构流程。 在目前为止我描述的场景中,体系结构是由体系结构内部圈子定义的,并且源于体系结构内部圈子。 我们需要将其反转。 恕我直言,一种孕育创新的建筑方法,旨在从发展的杂草中收集和传播思想。

为想要影响并为建筑做出贡献的人们铺平道路,使他们更容易这样做。 用这种方法,每个人都是建筑师。 或更确切地说,建筑师是一种人:一个想要抬起头,环顾四周并为更大的福利做出贡献的人。

听起来有点乌托邦式。 是的。 实际上,建筑美在旁观者的眼中,人们经常在方法和设计上意见分歧。 在大多数情况下,有可能达成共识,或者至少在需要时可以修正路线的道路上达成共识。

但是在某些情况下,这种情况不会发生。 在这些情况下,我发现将一个较小的团队聚集在一起,消除噪音,抛开个人热情并进行最后的通话是有益的。 在那次聚会之后,无论房间中发生了什么,都是那些人拥护这种方法的工作。

以这种身份,“建筑师”的作用是收集,培养和拥护一种通用的建筑方法。 (下图)

保管人

为了将这种构造与先入为主的“架构团队”和“建筑师”概念(再次强调空中引号)区分开来,我建议我们强调这是一种保管职能,我们开始称自己为“保管人”。

然后,我们可以设定每个人都是建筑师的期望(没有引号),并为建筑做出贡献。 然后,一些保管人-解决僵局,照顾,培育并促进体系结构以创建统一的方法/平台。

我正在考虑将我的头衔更改为首席保管人。 我认为它所产生的看门影像无论如何都是更相似的。 也许我们可以让好莱坞出演一个由监护人决定的矩阵前传。 =)

参考: WTF还是一名架构师吗? 来自我们的JCG合作伙伴 Brian ONeill,网址是Brian ONeill的Blog博客。

翻译自: https://www.javacodegeeks.com/2014/01/wtf-is-an-architect-anyway.html

<think> 我们参考了用户提供的引用内容,特别是引用[2]和引用[3]中提到了使用Flask-WTF获取表单数据的方法。 根据引用[2]:“request对象包含客户端请求的信息... request.form可以访问用户POST方法提交的表单数据。” 而引用[3]中给出了一个具体的代码示例,其中使用`request.form.get('字段名')`来获取表单数据。 但是,用户特别询问的是flask_wtf获取提交数据的方法。在Flask-WTF中,我们通常使用它提供的表单类来处理表单,并且可以通过表单对象的`data`属性或直接通过字段的`data`属性来获取数据。 具体方法如下: 1. 定义一个继承自FlaskForm的类,并在其中定义字段。 2. 在视图函数中实例化这个表单类。 3. 当表单被提交时(通常是POST请求),我们可以通过表单实例的`字段名.data`来获取提交的数据。 另外,引用[3]的代码示例中并没有使用Flask-WTF,而是直接使用了Flask的request对象。所以我们需要区分: - 使用Flask的request对象:适用于没有使用Flask-WTF的情况,直接操作request.form。 - 使用Flask-WTF:通过表单类实例的字段获取数据。 因此,针对用户问题“flask_wtf获取提交数据的方法”,我们重点介绍Flask-WTF的方式。 步骤: 1. 创建表单类 2. 在视图函数中实例化表单,并处理表单提交 3. 通过表单实例的字段的data属性获取数据 示例代码: from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, EqualTo class RegistrationForm(FlaskForm): username = StringField('用户名', validators=[DataRequired()]) password = PasswordField('密码', validators=[DataRequired()]) password2 = PasswordField('确认密码', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField('注册') @app.route('/register', methods=['GET', 'POST']) def register(): form = RegistrationForm() if form.validate_on_submit(): # 如果提交的表单通过验证(包括CSRF保护) username = form.username.data password = form.password.data # 然后可以进行后续处理,比如保存到数据库 # ... return '注册成功' return render_template('register.html', form=form) 在以上代码中,当表单提交并通过验证(包括CSRF保护)后,我们通过`form.username.data`和`form.password.data`获取数据。 另外,引用[1]提到Flask-WTF扩展了WTForms,并且在Flask中使用更加方便。所以,使用Flask-WTF的表单类获取数据是最为推荐的方式。 总结:Flask-WTF获取提交数据的主要方法是通过表单对象的字段的data属性。 注意:在模板中,我们需要使用`form.hidden_tag()`来包含CSRF令牌。 因此,回答用户的问题:Flask_WTF获取提交数据的方法是使用表单类实例的字段的data属性,例如form.username.data。 另外,用户提供的引用[3]中使用了request.form,这并不是Flask-WTF的用法,而是Flask自带的获取表单数据的方法。因此,我们这里要明确区分。 为了更全面,我们可以同时提到两种方法,但重点突出Flask-WTF的方式。 最终回答结构: 1. 直接回答问题:Flask_WTF获取提交数据的方法是通过表单实例的字段的data属性。 2. 提供一个简单的示例代码。 3. 对比说明Flask自带的request.form方法(非Flask-WTF方式)和Flask-WTF方式的区别。 根据引用内容,我们还需要注意引用标识。在回答中,我们参考了引用[2]和引用[3],但需要注意的是,引用[3]的代码并没有使用Flask-WTF,因此我们主要参考引用[2]关于Flask-WTF的描述。 最后,生成相关问题。 </think> ### Flask-WTF 获取提交数据的方法 在 Flask-WTF 中,获取表单提交数据主要有以下两种核心方法: #### 1. **通过表单对象直接获取字段数据**(推荐) 当表单通过 `validate_on_submit()` 验证后,可直接访问表单字段的 `data` 属性: ```python from flask_wtf import FlaskForm from wtforms import StringField, PasswordField class LoginForm(FlaskForm): username = StringField('用户名') password = PasswordField('密码') @app.route('/login', methods=['POST']) def login(): form = LoginForm() if form.validate_on_submit(): # 验证表单+CSRF令牌 username = form.username.data # ✅ 获取用户名 password = form.password.data # ✅ 获取密码 # 处理数据... ``` **优势**: - 自动处理 CSRF 保护 - 集成 WTForms 数据验证(如长度、格式等) - 直接访问类型转换后的数据(如 IntegerField 自动转整型)[^1][^2] #### 2. **通过 Flask 的 request 对象获取** 适用于未集成 FlaskForm 的场景: ```python from flask import request @app.route('/submit', methods=['POST']) def submit(): username = request.form.get('username') # 通过字段名获取 password = request.form.get('password') # 需手动校验数据完整性和安全性 ``` **注意**: - 需自行添加 CSRF 保护(如 `{{ form.csrf_token }}` 在模板中) - 需手动验证数据完整性和类型(如引用[3]中的 `all([...])` 校验)[^3] --- ### 关键对比 | **方法** | 数据验证 | CSRF 保护 | 代码简洁度 | 安全性 | |------------------------|----------|-----------|------------|--------| | 表单对象 (`form.field.data`) | ✅ 自动 | ✅ 自动 | ✅ 高 | ✅ 高 | | `request.form.get()` | ❌ 手动 | ❌ 需配置 | ❌ 低 | ️ 中 | > **最佳实践**:始终优先使用 `form.field.data` ,它整合了 WTForms 的验证能力和 Flask-WTF 的安全特性,可避免常见漏洞(如 CSRF 攻击)[^1][^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值