- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在玩 Tornado 。需要帮助。
现在我的浏览器有一个 id="chatdemo_user"的 cookie,其值为“gaurav”。因此,当我点击 URL http://localhost:9999
时,BaseHandler 类中的 get_current_user 函数会获取用户,但是当tornado 渲染 index.html
模板时,由于某种原因,它没有获取 current_user["name"]
的值,并且收到错误 TypeError: stringindexs must be integers, not str
。有人可以帮我吗?
Tornado 代码
define("port", default=9999, help="run on the given port", type=int)
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
user = self.get_cookie("chatdemo_user")
if not user: return None
return user
class MainHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.render("index.html")
def main():
parse_command_line()
app = tornado.web.Application(
[
(r"/", MainHandler),
],
cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__",
login_url="http://localhost:8080/login",
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
xsrf_cookies=True,
)
app.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
模板
<html>
<body>
<b>{{ current_user["name"] }}</b>
</body>
</html>
错误
[E 140307 17:03:09 web:1305] Uncaught exception GET / (10.19.122.127)
HTTPRequest(protocol='http', host='localhost:9999', method='GET', uri='/', version='HTTP/1.1', remote_ip='10.19.122.127', headers={'Accept-Language': 'en-US,en;q=0.8', 'Accept-Encoding': 'gzip,deflate,sdch', 'Host': 'indlin1564:9999', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36', 'Connection': 'keep-alive', 'Cookie': 'csrftoken=zf1DA5uT5yNb0mcrWnP6poOCw02SB5ie; chatdemo_user=gaurav; sessionid=w06k4g7qwm9z98fp39rfscek6p5r3qwu', 'Cache-Control': 'max-age=0'})
Traceback (most recent call last):
File "/optusr1/aimsys/tools/gauravy/local/lib/python2.7/site-packages/tornado/web.py", line 1218, in _when_complete
callback()
File "/optusr1/aimsys/tools/gauravy/local/lib/python2.7/site-packages/tornado/web.py", line 1239, in _execute_method
self._when_complete(method(*self.path_args, **self.path_kwargs),
File "/optusr1/aimsys/tools/gauravy/local/lib/python2.7/site-packages/tornado/web.py", line 2395, in wrapper
return method(self, *args, **kwargs)
File "./chatdemo.py", line 81, in get
self.render("index.html")
File "/optusr1/aimsys/tools/gauravy/local/lib/python2.7/site-packages/tornado/web.py", line 615, in render
html = self.render_string(template_name, **kwargs)
File "/optusr1/aimsys/tools/gauravy/local/lib/python2.7/site-packages/tornado/web.py", line 722, in render_string
return t.generate(**namespace)
File "/optusr1/aimsys/tools/gauravy/local/lib/python2.7/site-packages/tornado/template.py", line 278, in generate
return execute()
File "index_html.generated.py", line 11, in _tt_execute
_tt_tmp = current_user["name"] # index.html:3
TypeError: string indices must be integers, not str
最佳答案
在模板中将 current_user["name"]
替换为 current_user
。从 get_current_user
返回的 current_user
值是一个字符串。
关于python - Tornado 模板未获取 current_user ["name"的值],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249406/
Devise自述文件没有提及任何关于 @current_user 和 I don't see any reference to it in Devise's source code 的内容- 也不在我
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
刚开始使用我的应用程序身份验证设计开发,但是在从模型访问 current_user 时遇到了麻烦。我从 Controller 访问它没有问题。 对于我的场景,我需要获取当前用户 ID 以跟踪谁编辑了博
我在我的flask应用程序中使用flask_login扩展名登录用户。如您所知,此扩展名具有存储current_user的变量。该代码可以正常运行,除非要进行测试。 当我测试代码(使用unittest
我想用 Swift 为 OS X 应用程序定义一个变量。 但我总是收到此错误:“CURRENT_USER 的重新声明无效”。 这是我写的: var CURRENT_USER: Firebase? 我也
例如我有一个用户和一个地址,关系如下: class User < ActiveRecord::Base devise :database_authenticatable, :registerabl
我正在按照 teamtreehouse.com guide 构建我的第一个 Ruby on Rails 应用程序(ruby 2.0.0p353) . 我正在使用设计 3.2.2 devise在 app
我对 How to customize Devise to store more informations in the session? 有同样的问题 当我使用 current_user和 user
要为我的问题提供更多背景信息,请参阅此 Github 问题 - https://github.com/getsentry/raven-ruby/issues/144 我正在使用 raven这是一个错误
鉴于以下模型: Room (id, title) RoomMembers (id, room_id) RoomFeed, also an observer 当房间标题更新时,我想创建一个 RoomFe
我在 Rails 应用程序的 lib 目录中创建了一个类。该类需要访问 Devise 的 current_user。 我还应该指出,这个 lib 类经常从模型代码中访问,因此不能将 current_u
在 Flask 中,我想了解如何创建一个行为类似于 current_user 的函数,因为它在任何地方( Controller 和 View )都可用,但我很难真正知道它是什么搜索以找到答案。 我能找
我目前正在阅读 RoR 教程(http://railstutorial.org/chapters/sign-in-sign-out#sec:signin_success 是相关部分),这似乎相当不错,
我在 rails5 中使用 Active Model Serializer 0.10.7 我想知道如何在序列化程序中访问设计 current_user。 current_user 应该默认设置为范围。
如何将参数传递给我的 current_user 重定向? # SessionHelper.rb def current_user if(user_id = session[:user_id]
默认列值存在问题... 以下作品: alter table chartdata.reddit_comments add modified_datetime timestamp default now(
我使用以下命令检查 PostgreSQL 数据库中用户的组或角色, select rolname from pg_authid where pg_has_role('some_username', r
我正在使用系统测试来验证以下流程是否按用户预期的方式工作: 在表格中注册 登录 访问帐户页面 更新账户信息 但是,我在创建用户后遇到错误: Puma caught this error: Couldn
我正在使用 Flask-Login,我想通过调用 current_user.is_authenticated() 检查用户是否已登录。 我的 Flask 应用程序被组织成蓝图,其中包含一个主要的 __
我是一名优秀的程序员,十分优秀!