【问题标题】:Hello, Anonymous! How I set the AnonymousUser username in django...auth?你好,匿名!如何在 django...auth 中设置 AnonymousUser 用户名?
【发布时间】:2015-03-04 14:51:23
【问题描述】:

在回复 Django 教程答案之前,请仔细阅读。

我想将Hello, {{ request.user.username }} 放入模板中,如果没有用户登录,它应该返回“Hello, Anonymous”。不是“你好”。

想象一下当这个测试用例失败时我的惊讶:

def test_hello_Anon(self):
    assert 'Anonymous' == auth.models.AnonymousUser().username

有人知道怎么通过吗?最好不要覆盖和重新注册AnonymousUser 类??

我问是因为if 陈述是邪恶的。

【问题讨论】:

  • 您是否考虑过使用自定义上下文处理器?
  • 我不知道我是否错过了文件范围内像auth.model.AnonymousUser.username = "anon" 这样简单的东西。我考虑了一个自定义处理器,这就是为什么我添加了“没有覆盖和重新注册”。
  • 基本上,我会建议使用自定义上下文处理器来隐藏模板过滤器,而不是使用 Daniel 的示例,因此您的模板代码只是 {{ username }} 等,它不会覆盖任何内容。跨度>
  • 请注意我请求帮助通过的测试。
  • 我没有关注如何利用 default 过滤器使您的测试用例通过...

标签: django django-models django-authentication


【解决方案1】:

Django 有一个完美可用的default 过滤器:

{{ request.user.username|default:"Anonymous" }}

【讨论】:

  • tx - 我在常见问题解答中最喜欢 default: 处理器技术 - 即使它只是隐藏的 if。 (if 语句是邪恶的,当“用多态性替换条件”可以解决问题时。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 2011-03-05
  • 2011-08-24
  • 2011-09-25
相关资源
最近更新 更多