play 传值 Scope flash,params,renderArgs,routeArgs,session

[b]play.mvc.Controller:play framework的控制器基类[/b]

Scope.Flash flash:一个存放在hash map中存储[color=red]临时变量[/color]的变量范围。。通常情况下,在request的处理过程中把值放进去,然后在[color=red]紧接着的下一个请求[/color]处理中被使用,[color=red]下一个请求(第2个请求)处理完毕后,值即被销毁[/color]。

Scope.Params params:在整个请求的处理过程中都能被访问到,即[color=red]存放当前请求的参数[/color]。

Scope.RenderArgs renderArgs:一个存放在hash map中并在渲染阶段使用的变量范围。存储在这里的变量在[color=red]渲染阶段(即模板阶段)[/color]被使用。

Scope.RouteArgs routeArgs:一个存放在hash map中并在[color=red]路由处理[/color]阶段使用的变量范围。

Scope.Session session:play 1.x framework中,[color=red]session并不存储在服务器端,而是存储在客户端[/color]。实际上它存储在cookie中,因此大小被限制在4kb以内。
INFO: 127.0.0.1:56932 - "GET /api/depts?page=1&size=100 HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 93, in execute return self.await_(self._execute_async(operation, parameters)) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 105, in _execute_async result = await self._cursor.execute(operation, parameters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "asyncmy/cursors.pyx", line 179, in execute File "asyncmy/cursors.pyx", line 364, in _query File "asyncmy/connection.pyx", line 496, in query File "asyncmy/connection.pyx", line 684, in _read_query_result File "asyncmy/connection.pyx", line 1071, in read File "asyncmy/connection.pyx", line 646, in read_packet File "asyncmy/protocol.pyx", line 190, in asyncmy.protocol.MysqlPacket.raise_for_error File "asyncmy/protocol.pyx", line 194, in asyncmy.protocol.MysqlPacket.raise_for_error File "asyncmy/errors.pyx", line 128, in asyncmy.errors.raise_mysql_exception File "asyncmy/errors.pyx", line 137, in asyncmy.errors.raise_mysql_exception asyncmy.errors.ProgrammingError: (1146, "Table 'ai_roleplay.departments' doesn't exist") The above exception was the direct cause of the following exception: Traceback (most recent call last): File "E:\python\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self.scope, self.receive, self.send ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\fastapi\applications.py", line 1133, in __call__ await super().__call__(scope, receive, send) File "E:\python\Lib\site-packages\starlette\applications.py", line 113, in __call__ await self.middleware_stack(scope, receive, send) File "E:\python\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__ raise exc File "E:\python\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "E:\python\Lib\site-packages\starlette\middleware\base.py", line 182, in __call__ with recv_stream, send_stream, collapse_excgroups(): ~~~~~~~~~~~~~~~~~~^^ File "E:\python\Lib\contextlib.py", line 162, in __exit__ self.gen.throw(value) ~~~~~~~~~~~~~~^^^^^^^ File "E:\python\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups raise exc File "E:\python\Lib\site-packages\starlette\middleware\base.py", line 184, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "f:\Programmer\python\MyAI\myapp.py", line 64, in debug_request_middleware response: Response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\starlette\middleware\base.py", line 159, in call_next raise app_exc File "E:\python\Lib\site-packages\starlette\middleware\base.py", line 144, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "E:\python\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "E:\python\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "E:\python\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "E:\python\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__ await self.app(scope, receive, send) File "E:\python\Lib\site-packages\starlette\routing.py", line 716, in __call__ await self.middleware_stack(scope, receive, send) File "E:\python\Lib\site-packages\starlette\routing.py", line 736, in app await route.handle(scope, receive, send) File "E:\python\Lib\site-packages\starlette\routing.py", line 290, in handle await self.app(scope, receive, send) File "E:\python\Lib\site-packages\fastapi\routing.py", line 123, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "E:\python\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "E:\python\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "E:\python\Lib\site-packages\fastapi\routing.py", line 109, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\fastapi\routing.py", line 389, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... ) ^ File "E:\python\Lib\site-packages\fastapi\routing.py", line 288, in run_endpoint_function return await dependant.call(**values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "f:\Programmer\python\MyAI\backend\routes\dept_routes.py", line 27, in get_departments total, depts = await repo.get_departments(skip=skip, limit=size) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "f:\Programmer\python\MyAI\backend\repositories\department_repo.py", line 15, in get_departments total = (await self.db.execute(count_stmt)).scalar() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 461, in execute result = await greenlet_spawn( ^^^^^^^^^^^^^^^^^^^^^ ...<6 lines>... ) ^ File "E:\python\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn result = context.throw(*sys.exc_info()) File "E:\python\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute return self._execute_internal( ~~~~~~~~~~~~~~~~~~~~~~^ statement, ^^^^^^^^^^ ...<4 lines>... _add_event=_add_event, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, ^^^^^ ...<4 lines>... conn, ^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\orm\context.py", line 305, in orm_execute_statement result = conn.execute( statement, params or {}, execution_options=execution_options ) File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "E:\python\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection return connection._execute_clauseelement( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement ret = self._execute_context( dialect, ...<8 lines>... cache_hit=cache_hit, ) File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 93, in execute return self.await_(self._execute_async(operation, parameters)) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 105, in _execute_async result = await self._cursor.execute(operation, parameters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "asyncmy/cursors.pyx", line 179, in execute File "asyncmy/cursors.pyx", line 364, in _query File "asyncmy/connection.pyx", line 496, in query File "asyncmy/connection.pyx", line 684, in _read_query_result File "asyncmy/connection.pyx", line 1071, in read File "asyncmy/connection.pyx", line 646, in read_packet File "asyncmy/protocol.pyx", line 190, in asyncmy.protocol.MysqlPacket.raise_for_error File "asyncmy/protocol.pyx", line 194, in asyncmy.protocol.MysqlPacket.raise_for_error File "asyncmy/errors.pyx", line 128, in asyncmy.errors.raise_mysql_exception File "asyncmy/errors.pyx", line 137, in asyncmy.errors.raise_mysql_exception sqlalchemy.exc.ProgrammingError: (asyncmy.errors.ProgrammingError) (1146, "Table 'ai_roleplay.departments' doesn't exist") [SQL: SELECT count(departments.id) AS count_1 FROM departments] (Background on this error at: https://sqlalche.me/e/20/f405)
最新发布
11-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值