小编Mim*_*imu的帖子

Flask - wtforms:验证始终为false

首先,我是python和Flask的新手,所以如果我的问题很愚蠢,我很抱歉.我搜索它但从未找到答案(我猜这应该是一个"简单"的答案).

我想在我的网站上添加一个联系页面,我找到了这个教程,所以我跟着它.一切正常,直到表单验证.我只使用Required,form.validate()总是返回false.如果我不触摸我的代码,并删除表单类中的每个Required,它工作正常,form.validate()返回true.

我真的不明白为什么,我读了很多应该使用validate_on_submit(),但是如果我使用它我会收到错误:*'ClassName'对象没有属性'validate_on_submit'*

这是代码的相关部分:

Index.py

@app.route('/contact', methods=['GET','POST'])
def contact():
form = ContactForm()

if request.method == 'POST':
    if form.validate() == False:
        flash('All Fields are required.')
        return render_template('contact.html', form=form)
    else:
        return 'Form posted'
elif request.method == 'GET':
    return render_template('contact.html', form=form)
Run Code Online (Sandbox Code Playgroud)

forms.py

from wtforms import Form, TextField, TextAreaField, SubmitField, validators,ValidationError 

class ContactForm(Form):
  name = TextField("Name", [validators.Required()])
  email = TextField("Email")
  subject = TextField("Subject")
  message = TextAreaField("Message")
  submit = SubmitField("Send")
Run Code Online (Sandbox Code Playgroud)

contact.html

<div id="contact">
    {% for …
Run Code Online (Sandbox Code Playgroud)

python validation flask wtforms

12
推荐指数
3
解决办法
2万
查看次数

AngularJS:$ scope.array.push()不会更新视图,即使使用$ apply也是如此

我正在尝试学习AngularJS并且有一些我不理解的东西,这似乎是所有的互联网都通过使用解决了$scope.$apply,但我已经使用它,它什么也没做.

基本上,我使用Twitter API来检索时间轴,当我们从底部滚动时,它会加载更多的推文.这部分工作,我正在使用工厂来做,但我可以在控制台中显示对象接收,我这里没有问题.

我有这样的观点,以显示数据:

<div class='timeline' ng-controller='TimelineCtrl' is-scrolled='loadData()'>
    <div class='tweet' ng-repeat='p in posts'>
        <img class='portrait' src='{{p.user.profile_image_url}}' />
        <p>{{p.text}}</p>
        <p class='date'>{{p.created_at}}</p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来像这样:

    $scope.posts = [];

    // Load the original tweets list
    TwitterAPI.timeline($scope.count, function(data) {
        $scope.$apply(function() {
            $scope.maxId = data[data.length-1].id;
            $scope.sinceId = data[0].id;
            $scope.posts.push(data);
        });
    });
Run Code Online (Sandbox Code Playgroud)

数据是合法的.

我根本不懂的东西,让我觉得它很容易解决,我只是看不到它,如果我使用'= data'代替'push(data)',那么视图就是更新.即使我加载了更多的推文,如果我使用'=',视图也会更新(内容被替换当然不是我想要的).

注意:maxId,sinceId和count之前已初始化,我没有把它放在那里,因为我觉得不重要.

angularjs angularjs-scope angularjs-ng-repeat angularjs-controller

12
推荐指数
2
解决办法
6万
查看次数