- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我创建了一个宏来处理表单错误,如下所示:
{% macro render_field_with_errors(field) %}
<p>
{{ field.label }} {{ field(**kwargs)|safe }}
{% if field.errors %}
<ul>
{% for error in field.errors %}
<li style="color: red;">{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</p>
{% endmacro %}
{% macro render_field(field) %}
<p>{{ field(**kwargs)|safe }}</p>
{% endmacro %}
我的forms.py如下:
from flask.ext.wtf import Form, TextField, BooleanField, PasswordField, RadioField, SelectMultipleField
from flask.ext.wtf import Required
class LoginForm(Form):
username = TextField('email', validators = [Required()])
password = PasswordField('password', validators=[Required()])
remember_me = BooleanField('remember_me', default = False)
我的登录表单如下:
<!-- Login form -->
{% from "includes/_formhelpers.html" import render_field_with_errors %}
<form method="POST" action="/login" focus="first">
<div class="span5">
{{ login_form.hidden_tag() }}
{{ render_field_with_errors(login_form.username(placeholder="Username / Email", class="span10")) }}
<br>
{{ render_field_with_errors(login_form.password(placeholder="Password", class="span10")) }}
<br>
<div class="qp-log">
{{ render_field_with_errors(login_form.remember_me(class="qp-login", value="remember_me")) }} Remember Me
<br>
<button type="submit" class="btn qp-btn" style="height:30px;width:56px;">Login</button>
<button type="Reset" class="btn">Clear</button>
</div>
<div class="qp-pass">
Forgot Password? <a href ="#">click here</a>
</div>
</div>
<div class="span2">
<br>
<br>
<br>
<img src="{{ url_for('static', filename='img/or_icon.gif') }}">
</div>
<div class="span5">
<center>
<br>
<button class="btn btn-facebook">
<small>Connect with</small>
<big> Facebook </big>
</button>
<h4> or </h4>
<button type="Submit" class="btn qp-btn">
<a href="signup.html" style="color:white;">Sign Up for Free</a>
</button>
</center>
</div>
</form>
<!-- Form End -->
我收到以下错误:
Traceback (most recent call last):
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/rahul/git/webapp/webapp/routes.py", line 14, in index
return render_template("public/index.html", login_form=login_form)#, registration_form=registration_form)
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/templating.py", line 125, in render_template
context, ctx.app)
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/templating.py", line 107, in _render
rv = template.render(context)
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
return self.environment.handle_exception(exc_info, True)
File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/rahul/git/webapp/webapp/templates/public/index.html", line 1, in top-level template code
{% extends "public/base.html" %}
File "/home/rahul/git/webapp/webapp/templates/public/base.html", line 1, in top-level template code
{% extends 'layout.html' %}
File "/home/rahul/git/webapp/webapp/templates/layout.html", line 35, in top-level template code
{% block content %}{% endblock %}
File "/home/rahul/git/webapp/webapp/templates/public/index.html", line 4, in block "content"
{% include 'public/login.html' %}
File "/home/rahul/git/webapp/webapp/templates/public/login.html", line 6, in top-level template code
{{ render_field_with_errors(login_form.username(placeholder="Username / Email", class="span10")) }}
File "/home/rahul/git/webapp/webapp/templates/includes/_formhelpers.html", line 3, in template
{{ field.label }} {{ field(**kwargs)|safe }}
AttributeError: 'HTMLString' object has no attribute '__call__'
I am not getting whats wrong in the code? If I remove macro from html file and instead include for loop for error handling in html form, it works perfect. What I think is, the placeholder and class included in element which causes the error, but not sure why?
最佳答案
我最近遇到了类似的问题,我认为问题出在login.html中的这个模式
{{ render_field_with_errors(login_form.password(placeholder="Password", class="span10")) }}
您正在将占位符和类传递给登录表单,此时它只是 wtf 生成的一段 html。如果我在我的 flask 版本中尝试这个,即使其余代码不同,我也会得到完全相同的错误。如果我在助手中传递占位符和类,错误就会消失:
{{ field(class="span10",placeholder="Password",**kwargs)|safe }}
如果您不能在帮助程序中传递通用占位符和类,您始终可以在模板中指定它们
<div class=span10> {{render_field_with_errors(loginForm.password) }} </div>
更新:其实我又查了一下,你也可以这样做:
{{ render_field_with_errors(login_form.password,placeholder="Password", class="span10") }}
这是有道理的——您将关键字参数传递给一个字段。您没有向它传递一个带参数的函数,它无法处理这些参数,而只是传递几个关键字参数。希望这会有所帮助。
关于python - flask 属性错误 : 'HTMLString' object has no attribute '__call__' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143961/
我遵循了一本名为“Sitepoint Full Stack Javascript with MEAN”的书中的教程,我刚刚完成了第 6 章,应该已经创建了一个带有“数据库”的“服务器”。数据库只不过是
在 Jquery 中,我创建两个数组,一个嵌入另一个数组,就像这样...... arrayOne = [{name:'a',value:1}, {name:'b',value:2}] var arra
这个问题在这里已经有了答案: What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wa
我被放在别人的代码上,有一个类用作其他组件的基础。当我尝试 ng serve --aot(或 build --prod)时,我得到以下信息。 @Component({ ...,
我正在测试一些代码,并使用数据创建了一个 json 文件。 问题是我在警报中收到“[object Object],[object Object]”。没有数据。 我做错了什么? 这是代码:
我想打印 [object Object],[object Object] 以明智地 "[[{ 'x': '1', 'y': '0' }, { 'x': '2', 'y': '1' }]]"; 在 ja
我有一个功能 View ,我正在尝试以特殊格式的方式输出。但我无法让列表功能正常工作。 我得到的唯一返回是[object Object][object Object] [object Object]
在使用优秀的 Sim.js 和 Three.js 库处理 WebGL 项目时,我偶然发现了下一个问题: 一路走来,它使用了 THREE.Ray 的下一个构造函数: var ray = new THRE
我正在使用 Material UI 进行多重选择。这是我的代码。 {listStates.map(col => (
我的代码使用ajax: $("#keyword").keyup(function() { var keyword = $("#keyword").val(); if (keyword.
我遇到了下一个错误,无法理解如何解决它。 Can't resolve all parameters for AuthenticationService: ([object Object], ?, [o
我正在尝试创建一个显示动态复选框的表单,至少应选中其中一个才能继续。我还需要获取一组选中的复选框。 这是组件的代码: import { Component, OnInit } from '@angul
我正在开发 NodeJs 应用程序,它是博客应用程序。我使用了快速验证器,我尝试在 UI 端使用快速闪存消息将帖子保存在数据库中之前使用闪存消息验证数据,我成功地将数据保存在数据库中,但在提交表单后消
我知道有些人问了同样的问题并得到了解答。我已经查看了所有这些,但仍然无法解决我的问题。我有一个 jquery snipet,它将值发送到处理程序,处理程序处理来自 JS 的值并将数据作为 JSON 数
我继承了一个非常草率的项目,我的任务是解释为什么它不好。我注意到他们在整个代码中都进行了这样的比较 (IQueryable).FirstOrDefault(x => x.Facility == fac
我只是在删除数组中的对象时偶然发现了这一点。 代码如下: friends = []; friends.push( { a: 'Nexus', b: 'Muffi
这两个代码片段有什么区别: object = nil; [object release] 对比 [object release]; object = nil; 哪个是最佳实践? 最佳答案 object
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我在不同的对象上安排不同的选择器 [self performSelector:@selector(doSmth) withObject:objectA afterDelay:1]; [self per
NSLog(@"%p", &object); 和 NSLog(@"%p", object); 有什么区别? 两者似乎都打印出一个内存地址,但我不确定哪个是对象的实际内存地址。 最佳答案 这就是我喜欢的
我是一名优秀的程序员,十分优秀!