python – 使用Flask中的会话传递变量时的键错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用Flask中的会话传递变量时的键错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4005字,纯文字阅读大概需要6分钟。
内容图文
![python – 使用Flask中的会话传递变量时的键错误](/upload/InfoBanner/zyjiaocheng/718/930a4c332b68468fb318be95c080312b.jpg)
我想使用session将函数中的变量传递给Flask应用程序中的类.这是我的代码:
@app.route('/login', methods=['POST'])
def login():
if not request.is_json:
return jsonify({"msg": "Missing JSON in request"}), 400
username = request.json.get('username', None)
password = request.json.get('password', None)
session['client_fname'] = request.json.get('Client First Name', None)
session['client_lname'] = request.json.get('Client Last Name', None)
... ...
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200
class PrivateResource(Resource):
@app.route('/protected', methods=['GET'])
@jwt_required
def sendData():
return mysqldb.addUser("{}".format(session['client_fname']),"{}".format(session['client_lname']))
我想传递的变量是session [‘client_fname’]和session [‘client_lname’].但是,当我尝试使用curl -X GET http:// localhost:5000 / protected -H“授权:Bearer JWTGOESHERE”触发sendData()时,我得到:
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask_restful/__init__.py", line 273, in error_router
return original_handler(e)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask_restful/__init__.py", line 273, in error_router
return original_handler(e)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask_jwt_extended/view_decorators.py", line 101, in wrapper
return fn(*args, **kwargs)
File "/Users/open/PycharmProjects/FlaskMiddleware/Flask-API-Middleware-V1/authenticate.py", line 48, in sendData
return mysqldb.addUser("{}".format(session['client_fname'],None),"{}".format(session['client_lname']))
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/werkzeug/local.py", line 377, in <lambda>
__getitem__ = lambda x, i: x._get_current_object()[i]
File "/Users/open/venv/FlaskMiddleware/lib/python2.7/site-packages/flask/sessions.py", line 83, in __getitem__
return super(SecureCookieSession, self).__getitem__(key)
KeyError: 'client_fname'
我使用会话传递变量的方式有什么问题?我怎样才能解决这个问题?
UPDATE
如果这是一个与保存会话有关的cookie问题,我该如何实现?现在我在curl -H“Content-Type:application / json”创建一个cookie文件-X POST -d'{“username”:“user1”,“password”:“abc123”,“Client First Name”: “SAUR”,“客户姓氏”:“KRIS”}’http:// localhost:5000 / login -c cookies.txt然后尝试curl -X GET http:// localhost:5000 / protected -H“授权:持票人JWTGOESHERE“-b cookies.txt.现在我得到TypeError:视图函数没有返回有效的响应.该函数返回None或没有return语句结束.而且我不确定这是进步还是完全错误.
解决方法:
您似乎正在使用flask_jwt_extended,因此可以通过将数据直接存储在令牌中来绕过问题.
# ...
access_token = create_access_token({
'first_name': request.json.get('Client First Name', None),
'last_name': request.json.get('Client Last Name', None)
})
然后在受保护的路径中检索它:
# ...
user_adata = get_jwt_identity()
内容总结
以上是互联网集市为您收集整理的python – 使用Flask中的会话传递变量时的键错误全部内容,希望文章能够帮你解决python – 使用Flask中的会话传递变量时的键错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。