render_template导致TypeError:'str'对象不可调用

时间:2019-09-17 04:54:05

标签: javascript python flask flask-wtforms wtforms

我希望用户选择radio button,此信息将发送到服务器。最后,服务器将结果发送到TextArea字段中。我具有以下代码,并且一旦选择了任何radio button

Traceback (most recent call last):
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/loc/projects/flask/hellp.py", line 29, in hello_world
    return render_template('example.html', form=form)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/templating.py", line 140, in render_template
    ctx.app,
  File "/home/loc/miniconda3/lib/python3.7/site-packages/flask/templating.py", line 120, in _render
    rv = template.render(context)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/jinja2/asyncsupport.py", line 76, in render
    return original_render(self, *args, **kwargs)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/jinja2/environment.py", line 1008, in render
    return self.environment.handle_exception(exc_info, True)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/jinja2/environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/loc/miniconda3/lib/python3.7/site-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "/home/loc/projects/flask/templates/example.html", line 6, in top-level template code
    {{ form.text(cols="35", rows="20") }}
TypeError: 'str' object is not callable

test.py

from flask import Flask, render_template, request
from wtforms import Form, RadioField, TextAreaField
from wtforms.widgets import TextArea

SECRET_KEY = 'development'

app = Flask(__name__)
app.config.from_object(__name__)


class SimpleForm(Form):
    radio = RadioField(
        'Label', choices=[('location', 'location'), ('neighbour', 'neighbour')])
    text = TextAreaField('Text', widget=TextArea())


@app.route('/', methods=['post', 'get'])
def hello_world():
    form = SimpleForm(request.form)
    if request.method == 'POST':
        if form.validate():
            print(form.radio.data)
        else:
            print(form.errors)
    if form.radio.data == "location":
        form.text = "EARTH"


    return render_template('example.html', form=form)


if __name__ == '__main__':
    app.run(debug=True)

templates/example.html

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="{{url_for('static', filename='vehicle.js')}}"></script>

<form id="myform" action="" method="post">
    {{ form.radio }}
    {{ form.text(cols="35", rows="20") }}
    <div id="result"></div>
</form>

static/vehicle.js

$( document ).ready(function() {

  $('#myform input[type=radio]').on('change', function(event) {
      var result = $(this).val();
      $('#result').html(result);
      $('#myform').submit();
  });
});

我想念什么?

先谢谢您

0 个答案:

没有答案