Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在TemplateTag中获取request.user_Django_Django Templates - Fatal编程技术网

Django 如何在TemplateTag中获取request.user

Django 如何在TemplateTag中获取request.user,django,django-templates,Django,Django Templates,如何将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 imp

如何将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,templatetag可以正常工作。我只是无法在此templatetag中提取request.user的值


如果有任何指点,我将不胜感激。谢谢Kevin

您的
设置中是否有
django.core.context\u处理器。请求
?如果是这样,请将第一个参数添加到标记请求对象,然后就可以了。

如果标记
采用上下文
,那么在将django.core.context\u processors.request添加到settings.context\u processors之后,将有上下文['request'],用户可用


此外,在将django.contrib.auth.context\u processors.auth添加到settings.context\u processors之后,将出现context['user'.

。。。它可能是这样的:

 u = context['request'].user

只是为了更清楚地描述解决方案

在设置模块中,设置(或创建)上下文处理器变量,如下所示:

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线程: