如何在 Flask 中并行返回 jsonify 对象和渲染模板



我想使用以下登录功能。JWT令牌保存在cookie中后,我想重定向到用户主页。

@app.route("/login", methods=['GET','POST'])
def login():
signInform = LoginForm()
examForm = PersonExamForm()
online_users = mongo.db.users.find({"online": True})
try:
render_template('login.html', title = 'Login', form =signInform) db_cm.find_one({'username':signInform.username.data}) 
if auth != None:
print(signInform.password.data == auth['password'])
if signInform.password.data == auth['password']:       
access_token = create_access_token(identity=auth['username'], expires_delta=datetime.timedelta(minutes=1), user_claims=None, headers=None)
refresh_token =create_refresh_token(identity=auth['username'], expires_delta=datetime.timedelta(minutes=1), user_claims=None, headers=None)
# Set the JWT cookies in the response                
resp = jsonify({'login': True})
set_access_cookies(resp, access_token)
set_refresh_cookies(resp, refresh_token)               
return resp,200, render_template('home.html', posts = sample_posts, online_users=online_users)              

它不起作用,我收到一条错误消息:

错误:没有足够的值来解压缩(预期为 2,得到 1(127.0.0.1 - - [28/Nov/2019 13:37:48] "POST /login HTTP/1.1" 500 - Traceback (most recent call last): File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 2463, in __call__ return self.wsgi_app(environ, start_response) File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 2449, in wsgi_app response = self.handle_exception(e) File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 1866, in handle_exception reraise(exc_type, exc_value, tb) File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflask_compat.py", line 39, in reraise raise value File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 2446, in wsgi_app response = self.full_dispatch_request() File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 1952, in full_dispatch_request return self.finalize_request(rv) File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 1967, in finalize_request response = self.make_response(rv) File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packagesflaskapp.py", line 2142, in make_response rv.headers.extend(headers) File "C:Users.virtualenvsTest_Projects-7jm6kxsTlibsite-packageswerkzeugdatastructures.py", line 1091, in extend for key, value in iterable: ValueError: not enough values to unpack (expected 2, got 1) 127.0.0.1 - - [28/Nov/2019 13:37:48] "GET /login?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 200 - 127.0.0.1 - - [28/Nov/2019 13:37:48] "GET /login?__debugger__=yes&cmd=resource&f=jquery.js HTTP/1.1" 200 - 127.0.0.1 - - [28/Nov/2019 13:37:48] "GET /login?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 200 - 127.0.0.1 - - [28/Nov/2019 13:37:48] "GET /login?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 200 - 127.0.0.1 - - [28/Nov/2019 13:37:48] "GET /login?__debugger__=yes&cmd=resource&f=ubuntu.ttf HTTP/1.1" 200 - 127.0.0.1 - - [28/Nov/2019 13:37:49] "GET /login?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 200 -如何解决这个问题?

您可能正在寻找这样的东西:

resp = make_response(render_template(*args))
set_access_cookies(resp, access_token)
set_refresh_cookies(resp, refresh_token)               
return resp, 200       

最新更新