【问题标题】:how to get request.user in a TemplateTag如何在 TemplateTag 中获取 request.user
【发布时间】:2011-05-04 10:03:15
【问题描述】:

如何将 request.user 的值放入 TemplateTag 中?

在文件 myproject/news/templatetags/news_tags.py 我有:

from django import template
from myproject.news.buildnews import BuildNewsList
from django.contrib.auth.models import User
from django import http
from django.contrib import admin
from django.template import RequestContext

register = template.Library()

def news_now (context):
    #who = request.user  ## this doesn't work
    news = BuildNewsList()
    entries = news.buildnewslist()
    return {'entries': entries, 'who': who, }

register.inclusion_tag('news_list.html', takes_context=True)(news_now)

另外,我有一个文件 news_list.html 并且模板标签总体上是有效的。我只是无法在这个模板标签中提取 request.user 的值。

不胜感激任何指针。谢谢。凯文

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    您的settings.CONTEXT_PROCESSORS 中有django.core.context_processors.request 吗?如果是这样,请将标签的第一个参数设为请求对象,然后就可以了。

    【讨论】:

      【解决方案2】:

      如果那个标签takes_context,那么在将 django.core.context_processors.request 添加到 settings.CONTEXT_PROCESSORS 之后,就会有 context['request'].user 可用。

      另外,将django.contrib.auth.context_processors.auth添加到settings.CONTEXT_PROCESSORS后,会有context['user']。

      【讨论】:

        【解决方案3】:

        ...它可能看起来像这样:

         u = context['request'].user
        

        【讨论】:

          【解决方案4】:

          只是为了对解决方案的描述更清楚一点。

          在您的设置模块中,设置(或创建)CONTEXT_PROCESSORS 变量,如下所示:

          CONTEXT_PROCESSORS  = (
              'django.contrib.auth.context_processors.auth'
          )
          

          然后在您的视图模板中,您可以简单地使用 {{ user.username }} 引用您当前登录的用户对象。

          这是因为 django.contrib.auth.context_processors.auth 模块将 'user' 变量添加到上下文字典中。这几乎等同于:

          ReqCon = RequestContext(Request, {'user' : Request.user})
          html = t.render(ReqCon)
          return HttpResponse(html)
          

          查看 SO 线程:Always including the user in the django template context

          【讨论】:

            猜你喜欢
            • 2018-05-29
            • 2013-11-17
            • 2015-11-26
            • 1970-01-01
            • 2015-07-24
            • 1970-01-01
            • 1970-01-01
            • 2020-04-14
            相关资源
            最近更新 更多