为啥我登录了右上角还是登录注册,后台日志已经看见cookie记录set current user: xxx@xxx.xxx
Topic source要加一个判断: 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 }
楼上是对的,day10写的middleware的功能就是找到cookie对应的user并放入request。所以这里只加上一句话就够了:
return {
'__template__': 'blogs.html',
'blogs': blogs,
'__user__': request.__user__
}
@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, }
- 1
- 2
花朝zhe
如果在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 }