【问题标题】:How to use Dynamic variables in Django base.html如何在 Django base.html 中使用动态变量
【发布时间】:2012-02-05 08:20:00
【问题描述】:

我想在每个页面的顶部输出 'hello,XXX'(XXX=request.session['user']),所以我在 base.html 中的代码下编写

hello {{ request.session['user'] }}

还有 TemplateSyntaxError:

Could not parse the remainder: '['user']' from 'request.session['user']'

有一个类似的问题,但我真的不明白。 Dynamic variables in Django base.html

如果XXX是函数返回值,这个函数在哪里写,如何渲染这个值?

谢谢:)

【问题讨论】:

    标签: python django


    【解决方案1】:

    在 Django 中,您不会在模板代码中使用列表索引(例如 request.session['user']),而是将其键入为“某种”函数,例如:request.session.user 来获取它。这就是模板系统的工作原理。

    在您的用例中,可能值得注意的是 Django 有一个 request.session.user 的别名,仅称为 user。所以如果你例如想要获得您将使用的用户名:user.usernameuser.first_name 作为他们的名字。你当然可以用request.session.user.username实现同样的效果

    【讨论】:

    • 如果XXX是函数返回值,如何将值渲染到base.html :)
    【解决方案2】:

    这与在 base.html 中无关。它也与函数没有任何关系,因为您没有调用函数。问题只是您没有阅读有关模板语法的文档。在模板中,属性访问和字典查找都是用“.”完成的。

    {{ request.session.user }} 
    

    虽然我不知道你为什么要为此使用会话,因为用户在 request.user 中。

    【讨论】:

    • 我的应用是一个简单的网站,不使用 django auth。用户登录时会创建SESSION['user'],request.session['user']={'uid':uid,'nickname':nickname},每页顶部都有hello XXX。我在 base.html 中写了 {{ request.session.user.nickname }},它不起作用,但会话确实创建了
    【解决方案3】:

    据我所知,Django 模板中已经有一个{{ user }} 可用,如果您使用 Django 用户身份验证系统,那么您可以尝试使用{{ user.username }}

    您也可以查看this thread。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2013-05-15
      相关资源
      最近更新 更多