- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对Python比较陌生,并且一直关注Miguel Grinberg Flask Mega-Tutorial。
我有一个非常简单的表格,当我尝试提交时,收到以下错误:
AttributeError: 'StringField' object has no attribute 'translate'
from flask.ext.wtf import Form
from wtforms import StringField
from wtforms.validators import DataRequired
class CreateSubjectForm(Form):
name = StringField('name', validators=[DataRequired()])
views.py
:
@app.route('/create_subject', methods=['GET', 'POST'])
def create_subject():
form = CreateSubjectForm()
if form.validate_on_submit():
subject = Subject(name=form.name)
db.session.add(subject)
db.session.commit()
return render_template('create_subject.html',
title='Create Subject',
form=form)
{% extends "base.html" %}
{% block content %}
<h2>Create Subject</h2>
<form action="" method="post" name="create_subject">
{{ form.hidden_tag() }}
<div class="form-control-label">Name: </div>
<div class="form-control">{{ form.name(size=45) }}</div>
<input type="submit" value="Create">
</form>
{% endblock %}
wtf
行中的
flask.ext
中找不到
from flask.ext.wtf import Form
,这一事实引起了人们的关注。我正在使用Python 2.7。从研究看来,这是导入2.7的正确方法。我尝试将其更改为
from flask_wtf import Form
,但PyCharm错误消失了,但是行为是相同的。
pip.install
安装了所有程序,看来我可以了-这是虚拟环境中的
pip.freeze
:
Babel==2.2.0
blinker==1.4
coverage==4.0.3
decorator==4.0.9
Flask==0.10.1
Flask-Babel==0.9
Flask-Login==0.3.2
Flask-Mail==0.9.1
Flask-OpenID==1.2.5
Flask-SQLAlchemy==2.1
Flask-WhooshAlchemy==0.56
Flask-WTF==0.12
flipflop==1.0
guess-language==0.2
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
pbr==1.8.1
PyMySQL==0.7.2
python-openid==2.2.5
pytz==2016.3
six==1.10.0
speaklater==1.3
SQLAlchemy==1.0.12
sqlalchemy-migrate==0.10.0
sqlparse==0.1.19
Tempita==0.5.2
Werkzeug==0.11.5
Whoosh==2.7.3
WTForms==2.1
> Traceback (most recent call last): File
> "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1836, in __call__
> return self.wsgi_app(environ, start_response) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1820, in wsgi_app
> response = self.make_response(self.handle_exception(e)) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1403, in handle_exception
> reraise(exc_type, exc_value, tb) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1817, in wsgi_app
> response = self.full_dispatch_request() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1477, in full_dispatch_request
> rv = self.handle_user_exception(e) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1381, in handle_user_exception
> reraise(exc_type, exc_value, tb) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1475, in full_dispatch_request
> rv = self.dispatch_request() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\flask\app.py",
> line 1461, in dispatch_request
> return self.view_functions[rule.endpoint](**req.view_args) File "C:\Users\timni\onedrive\dev\studyplanner\app\views.py", line 24, in
> create_subject
> db.session.commit() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\scoping.py",
> line 157, in do
> return getattr(self.registry(), name)(*args, **kwargs) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\session.py",
> line 801, in commit
> self.transaction.commit() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\session.py",
> line 392, in commit
> self._prepare_impl() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\session.py",
> line 372, in _prepare_impl
> self.session.flush() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\session.py",
> line 2019, in flush
> self._flush(objects) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\session.py",
> line 2137, in _flush
> transaction.rollback(_capture_exception=True) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\util\langhelpers.py",
> line 60, in __exit__
> compat.reraise(exc_type, exc_value, exc_tb) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\session.py",
> line 2101, in _flush
> flush_context.execute() File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\unitofwork.py",
> line 373, in execute
> rec.execute(self) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\unitofwork.py",
> line 532, in execute
> uow File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\persistence.py",
> line 174, in save_obj
> mapper, table, insert) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\orm\persistence.py",
> line 800, in _emit_insert_statements
> execute(statement, params) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\engine\base.py",
> line 914, in execute
> return meth(self, multiparams, params) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\sql\elements.py",
> line 323, in _execute_on_connection
> return connection._execute_clauseelement(self, multiparams, params) File
> "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\engine\base.py",
> line 1010, in _execute_clauseelement
> compiled_sql, distilled_params File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\engine\base.py",
> line 1146, in _execute_context
> context) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\engine\base.py",
> line 1344, in _handle_dbapi_exception
> util.reraise(*exc_info) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\engine\base.py",
> line 1139, in _execute_context
> context) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\sqlalchemy\engine\default.py",
> line 450, in do_execute
> cursor.execute(statement, parameters) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\cursors.py",
> line 156, in execute
> query = self.mogrify(query, args) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\cursors.py",
> line 135, in mogrify
> query = query % self._escape_args(args, conn) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\cursors.py",
> line 115, in _escape_args
> return dict((key, conn.escape(val)) for (key, val) in args.items()) File
> "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\cursors.py",
> line 115, in <genexpr>
> return dict((key, conn.escape(val)) for (key, val) in args.items()) File
> "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\connections.py",
> line 781, in escape
> return escape_item(obj, self.charset, mapping=mapping) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\converters.py",
> line 26, in escape_item
> val = encoder(val, mapping) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\converters.py",
> line 109, in escape_unicode
> return u"'%s'" % _escape_unicode(value) File "C:\Users\timni\onedrive\dev\studyplanner\venv\lib\site-packages\pymysql\converters.py",
> line 72, in _escape_unicode
> return value.translate(_escape_table) AttributeError: 'StringField' object has no attribute 'translate'
最佳答案
发生错误是因为Subject
实例是使用StringField
实例构造的,但所需的是StringField
的数据值。
所以代替
subject = Subject(name=form.name) # form.name is a StringField
subject = Subject(name=form.name.data)
AttributeError: 'StringField' object has no attribute 'translate'
中-
translate
是一个字符串方法,因此它建议将某个不是
string
的内容传递给某个需要
string
的内容。
关于python - Flask WTF 'StringField'对象没有属性 'translate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930346/
如果我在构建字段期间设置默认值,则一切都会按预期工作: my_field = StringField("My Field: ", default="default value", validators
在使用 MongoAlchemy 时,我一直在与一个奇怪的错误作斗争。 我的 Participant 模型上有一个 name = db.StringField()。大多数时候它工作正常,但由于某种原因
我有一个 Lucene 文档,其中包含多个同名的 StringField,如下所示: doc.add(new StringField("uri", "http://www.doesn-t-work.c
我有一个表格,我想用上一页收到的信息自动填充一些字段,但如果他们想调整它,就需要改变它。我正在为有效的 SelectField 使用动态创建的列表,但添加 StringField 不成功。请参阅下面的
我正在尝试使用 Flask、WTForms 和通过 Flask-Bootstrap 提供的宏来读取表单。这在某些情况下有效,而在其他情况下(看似相似的情况)却不起作用。当我检查特定 StringFie
我想知道我是否可以在我的用户文档的设置中添加一个要求来检查特定的字符串。我的想法是,当使用电子邮件地址创建用户文档时,我想确保该电子邮件来自大学,因此它应该以“.edu”结尾例子:“john.doe@
我的数据库是一个 Postgres 实例。我的模型定义为: from app import db class Device(db.Model): __tablename__ = 'device
在 lucene 索引部分,我开始使用 StoredField,其中我不需要索引字段(在我对相同字段使用 StringField 之前)。 这基本上是为了减少一些索引空间。 我正在处理包含 100 万
我有一个 WTForm,其中包含以下内容: class MyForm(FlaskForm): ... timestamp = DateTimeField("Timestamp", de
我对 WTForms、Flask-WTF 比较陌生。我无法弄清楚如何从表单定义中简单地将 HTML5 属性“autofocus”添加到表单字段之一。我想在 Python 代码中这样做,而不是在 Jin
我正在 lucene 索引中搜索完全匹配的文档标题。为实现这一点,我有以下两种替代方法来为将被索引的文档创建字段。 方法一: FieldType _contentFieldType = new Fie
我使用一个多值字段查询我的索引。在索引期间,该字段是使用几个字段创建的,其中一些是 TextField,一些是 StringField。 我遇到的问题是,通过使用带有多个单词的查询来查询索引,我得到了
我将 python 2.7.12 与 pymongo 2.8.1、django 1.11.7、mongoengine 0.9.0 和 mongodb 3.4.10 结合使用。我正在创建一个自定义用户模
我正在尝试使用 postman 测试在 flask 中使用 wtform 创建的表单。在表单中,我有一个 StringFields 的 FieldList,并且指定了最小条目数 = 2。我尝试了不同的
这是我的模型: class F(Form): a = StringField('a', validators = [validators.DataRequired()]) 有没有办法让表单中的
我想通过包含整数的 StringField 对 ClientDataset 进行排序。这些整数用作发票上的项目编号。当我使用简单索引按该字段对 ClientDataset 进行排序时,结果如下: 1
我是一名优秀的程序员,十分优秀!