《Flask Web开发》学习笔记之bug--(3)【ExtDeprecationWarning: Importing flask.ext.wtf is deprecated, use flask_】

在学习《Flask Web开发》时遇到ExtDeprecationWarning警告,提示导入flask.ext.wtf的方式已过时,应改为flask_.同时,应用在运行时出现500 Internal Server Error。错误信息表明可能是服务器过载或应用内部存在错误。解决方法是逐步排查并修复这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#hello.py

from datetime import datetime
from flask import Flask, render_template
from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask.ext.wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required

class NameForm(Form):
	name = StringField('What is your name?', validators=[Required])
	submit = SubmitField('Submit')
		

app = Flask(__name__)

app.config['SECRET_KEY'] = 'hard to guess string'
manager = Manager(app)
bootstrap = Bootstrap(app)
moment = Moment(app)

@app.errorhandler(404)
def page_not_found(e):
	return render_template('404.html'), 404

@app.errorhandler(500)
def internal_server_error(e):
	return render_template('500.html'), 500

@app.route('/')
def index():
	return render_template('index.html', current_time=datetime.utnow())

@app.route('/user/<name>')
def user(name):
	return render_template('user.html', name=name)


if __name__ == '__main__':
	manager.run()

$ python3 hello.py runserver --host 0.0.0.0

报错信息:

hello.py:6: ExtDeprecationWarning: Importing flask.ext.wtf is deprecated, use flask_wtf instead.
  from flask.ext.wtf import Form
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
[2017-07-13 12:45:46,448] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/henry/.local/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "hello.py", line 32, in index
    return render_template('index.html', current_time=datetime.utnow())
AttributeError: type object 'datetime.datetime' has no attribute 'utnow'
127.0.0.1 - - [13/Jul/2017 12:45:46] "GET / HTTP/1.1" 500 -
Error on request:
Traceback (most recent call last):
  File "/home/henry/.local/lib/python3.5/site-packages/werkzeug/serving.py", line 209, in run_wsgi
    execute(self.server.app)
  File "/home/henry/.local/lib/python3.5/site-packages/werkzeug/serving.py", line 197, in execute
    application_iter = app(environ, start_response)
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/home/henry/.local/lib/python3.5/site-packages/flask/app.py", line 1547, in handle_exception
    return self.finalize_request(handler(e), from_error_handler=True)
  File "/home/henry/dev/Flask_Web_Python_Henry/flask_henry/hello.py", line 28, in internal_server_error
    return render_template('500.html'), 500
  File "/home/henry/.local/lib/python3.5/site-packages/flask/templating.py", line 133, in render_template
    return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list),
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/environment.py", line 869, in get_or_select_template
    return self.get_template(template_name_or_list, parent, globals)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/environment.py", line 830, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/environment.py", line 804, in _load_template
    template = self.loader.load(self, name, globals)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/loaders.py", line 125, in load
    code = environment.compile(source, name, filename)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/environment.py", line 591, in compile
    self.handle_exception(exc_info, source_hint=source_hint)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "/home/henry/dev/Flask_Web_Python_Henry/flask_henry/templates/500.html", line 9, in template
    {% endlock %}
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/environment.py", line 497, in _parse
    return Parser(self, source, name, encode_filename(filename)).parse()
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 896, in parse
    result = nodes.Template(self.subparse(), lineno=1)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 878, in subparse
    rv = self.parse_statement()
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 130, in parse_statement
    return getattr(self, 'parse_' + self.stream.current.value)()
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 268, in parse_block
    node.body = self.parse_statements(('name:endblock',), drop_needle=True)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 165, in parse_statements
    result = self.subparse(end_tokens)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 878, in subparse
    rv = self.parse_statement()
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 144, in parse_statement
    self.fail_unknown_tag(token.value, token.lineno)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 97, in fail_unknown_tag
    return self._fail_ut_eof(name, self._end_token_stack, lineno)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 90, in _fail_ut_eof
    self.fail(' '.join(message), lineno)
  File "/home/henry/.local/lib/python3.5/site-packages/jinja2/parser.py", line 59, in fail
    raise exc(msg, lineno, self.name, self.filename)
jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'endlock'. Jinja was looking for the following tags: 'endblock'. The innermost block that needs to be closed is 'block'.

注意到【

hello.py:6: ExtDeprecationWarning: Importing flask.ext.wtf is deprecated, use flask_wtf instead.


【http://localhost:5000/】的网页标题显示【500 Internal Server...】,内容显示【Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.】


解决办法:

不赞成使用【

flask.ext.wtf
】,用【
flask_wtf
】代替。


报错信息相当之多,一个一个慢慢来吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值