Discuss / Python / 为啥我登录了右上角还是登录注册,后台日志已经看见cookie记录set current user: xxx@xxx.xxx

为啥我登录了右上角还是登录注册,后台日志已经看见cookie记录set current user: xxx@xxx.xxx

Topic source

花朝zhe

#1 Created at ... [Delete] [Delete and Lock User]

如果在handlers.py中的def index()改成这样就可以正常显示姓名和登出 user = None try: cookie_str = request.cookies.get(COOKIE_NAME) user = await cookie2user(cookie_str) except: pass return { 'template': 'blogs.html', 'blogs': blogs, 'user': user }

要加一个判断: if ('deleted' in cookie_str): user='' else: user=await cookie2user(cookie_str)

因为登出之后cookie变为了‘-delete-’,不加判断的话会调用cookie2user()函数,而这个函数里边有int(expires),此时expires就是‘delete’,是一个非数字的字符串,会报错

还有点问题,已经改了: cookie_str=request.cookies.get(COOKIE_NAME) user='' if cookie_str: if 'deleted' in cookie_str: user='' else: user=await cookie2user(cookie_str) return { 'template':'blogs.html', 'blogs':blogs, 'page':page, 'user':user }

黑-白_GREY

#4 Created at ... [Delete] [Delete and Lock User]

app.py,老师已经在response_factory判断响应是不是HTML模板那里加上了r['__user__']=request.__user

Minty君

#5 Created at ... [Delete] [Delete and Lock User]

楼上是对的,day10写的middleware的功能就是找到cookie对应的user并放入request。所以这里只加上一句话就够了:

return {
    '__template__': 'blogs.html',
    'blogs': blogs,
    '__user__': request.__user__
}

加上r['user']=request.__user之后就显示“500 Internal Server Error”是什么情况?

齐木大仙

#7 Created at ... [Delete] [Delete and Lock User]

你再把 auth_factory中间件加上就好了

@get('/') async def index(request, *, page='1'): page_index = get_page_index(page) num = await Blog.findNumber('count(id)') page = Page(num) if num == 0: blogs = [] else: blogs = await Blog.findAll(orderBy='created_at desc', limit=(page.offset, page.limit)) return { 'template': 'blogs.html', 'page': page, 'blogs': blogs, 'user': request.user, }

上面的代码下划线被自动删除了,总之想楼上说的加上user和中间件就行了,index的参数里相应的加上request

醉后诀

#10 Created at ... [Delete] [Delete and Lock User]

黑白提醒的及时,因为老师的通篇都是yeild from,所以没有全部替换,偷偷加了这一句也不知道。。


  • 1
  • 2

Reply