python - Flask TypeError:“_RequestGlobals”类型的参数不可迭代
问题描述
TL;博士
我正在这个网站上工作:sendsomething.net
我的 Flask 项目出现以下错误:
Traceback (most recent call last):
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 1518, in __call__
return self.wsgi_app(environ, start_response)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 1506, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 1504, in wsgi_app
response = self.full_dispatch_request()
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 1264, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 1262, in full_dispatch_request
rv = self.dispatch_request()
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 1248, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/leilers/sendsomething/sendsomething_flask/sendsomething/views.py", line 62, in hello
return render_template('hello.html')
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/templating.py", line 121, in render_template
ctx.app.update_template_context(context)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask/app.py", line 661, in update_template_context
context.update(func())
File "/home/leilers/sendsomething/sendsomething_flask/sendsomething/views.py", line 54, in inject_login_form
g.login_form = LoginForm()
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/wtforms/form.py", line 208, in __call__
return type.__call__(cls, *args, **kwargs)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask_wtf/form.py", line 87, in __init__
super(FlaskForm, self).__init__(formdata=formdata, **kwargs)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/wtforms/form.py", line 274, in __init__
self.process(formdata, obj, data=data, **kwargs)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/wtforms/form.py", line 131, in process
field.process(formdata)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/wtforms/csrf/core.py", line 43, in process
self.current_token = self.csrf_impl.generate_csrf_token(self)
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask_wtf/csrf.py", line 134, in generate_csrf_token
token_key=self.meta.csrf_field_name
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/flask_wtf/csrf.py", line 42, in generate_csrf
if field_name not in g:
File "/home/leilers/sendsomething/env/lib/python2.7/site-packages/werkzeug/local.py", line 365, in <lambda>
__contains__ = lambda x, i: i in x._get_current_object()
TypeError: argument of type '_RequestGlobals' is not iterable
更深入
我没有网页设计经验,所以我很难过(并且已经好几天了)。如果以上内容就是您帮助我解决问题所需的全部内容,那就太棒了。如果您需要更多细节,这里是:
我的 Flask 项目的相关部分<root>/sendsomething/views.py
#...
@app.route("/")
def hello():
return render_template('index.html')
#...
该文件<root>/sendsomething/templates/index.html
确实存在。它的内容并不重要,因为更改内容对错误没有影响。您实际上可以通过访问sendsomething.net查看输出。
我已阅读并尝试解决此相关问题,类型为 '_RequestGlobals' 的 Flask 参数不可迭代,这似乎是遇到此问题的唯一其他实例。
我在我的 virtualenv 中,运行 python 2.7.16。我已经运行pip install Werkzeug --update
(尽管我requirements.txt
指定它应该使用Werkzeug 0.8.2)。我已确保which python
指向正确的位置。
如果您需要更多信息,请告诉我。谢谢您的帮助!
解决方案
这只是我的第一眼,所以如果这不是一个有用的回应,我深表歉意。您的代码看起来像这样:
59 @app.route("/")
60 def hello():
61 #return render_template('index.html')
62 return render_template('hello.html')
你说 index.html 存在......看起来 return forindex.html
被注释掉了,它仍然试图去hello.html
.
因此,正如您在问题中描述的那样,它应该是以下内容:
@app.route("/")
def hello():
return render_template('index.html')
推荐阅读
- powershell - 更改 powershell 对象中的嵌套对象值
- python - 如何将两个列表连接到 Pandas DataFrame 中?
- powershell - Publish-AzWebApp 引发错误
- reactjs - 使用 cypress 处理 React 重新渲染
- python - KeyError: 'print $2' 当我使用 subprocess.call("ps -ef | grep wget | grep {0} | awk '{print $2}'
- javascript - 在 Ant Design Tree 中过滤 treeNodes
- flutter - 如何在 Flutter 中打开原生表情符号键盘
- wix - 为非管理员用户创建 WiX MSI 补丁包或安装更新
- svelte - Svelte 应用程序构建但无法访问本地主机
- android - 从接收方获取数据时,intent 为 null