Discuss / Python / 登陆和cookie 验证, 后台日志打印结果显示 set user正常,但是jinja2模板页面, __user__ 没法获取到值

登陆和cookie 验证, 后台日志打印结果显示 set user正常,但是jinja2模板页面, __user__ 没法获取到值

Topic source

一雷叔一

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

登陆的时候后台显示正常, 包括使用的cookie 验证用户也正常, 后台日志打印结果显示设置 user正常,但是jinja2模板页面中, user 没法获取到值, 导致页面右上一直判断的是需要登陆状态...

菜鸟一个, 也不知道这是什么原因导致的...

一雷叔一

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

看了廖大大的 第14天内容, 知道咋回事了... 呵呵~~

对啊对,为啥这个还是显示登陆和注册呢,还有如果要存储头像怎么搞。。。

装饰器

@get('/')

index = get('/)(index)

async def index(request): summary = '' blogs = [ Blog(id='1', name='Test Blog', summary=summary, createdat=time.time() - 120), Blog(id='2', name='Something New', summary=summary, createdat=time.time() - 3600), Blog(id='3', name='Learn Swift', summary=summary, createdat=time.time() - 7200) ] return { 'template': 'blogs.html', 'blogs': blogs, '_user': request.__user # 这里要返回去 }

Hsakei

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

登陆后没有显示头像和名字,是因为在base.html里面有个user参数,这个参数需要通过jinja2模板传进去,在handler.py 里面的主页handler函数里面改成这样就可以了

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

This_is_PYj

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

你这样写没有报错吗?blogs.html页面中是没有user属性的

这个问题我也遇到了。翻来覆去找问题,小结如下: 1、没有认真消化廖老师的讲义,尤其是没有结合课程代码的更新去消化; 2、用了新版本的Jquery和Vue,个别语法需要修改,尤其是$.post(),v-summit等; 3、可能是老师故意锻炼我们的,有些细节不要补充,例如四楼和五楼的答复,需要把user返回加进去; 4、数据库返回的user、blog等,是dict类型数据,没有.key属性,需要改成[key]; 5、数据库返回的元组,不能直接创建dict,需要变成list,再利用类的mappings创建dict。 感谢大家的讨论,让我学习路上少走弯路。


  • 1

Reply