首页 > 解决方案 > 我无法在我的 Django 模板中访问请求

问题描述

你好真棒人!

一个简单的问题。我有这样的看法:

def hello(request):
     users_list = User.objects.all()
     context = {"users_list":users_list}
     return render_to_response('index/users-list.html',context=context)

在我的模板中,我想访问 COOKIES,request

 {% for u in users_list %}
 {% if u.id in request.COOKIES.room|split %}
       remove user
 {% endif %}
 {% endfor %}

我尝试显示{{request.COOKIES}},但没有显示任何内容,但是密钥存在。模板中似乎没有该请求。

split 是一个自定义标签过滤器

@register.filter    
def split(string_,sep=","):
    return string_.split(sep)

为什么我无法访问请求?,并且我的可用的全局变量project/context_processors.py都无法访问

标签: pythondjangodjango-templatesdjango-views

解决方案


不要使用,自从在 Django 1.3 中引入render_to_response以来,它就已经过时了。renderrender_to_response函数在 Django 2.0 中已弃用,最终将在 Django 3.0 中删除

在这种情况下,更改要使用的视图,render如下所示:

 return render(request, 'index/users-list.html', context=context)

假设您启用了request 上下文处理器TEMPLATES(它在默认生成的设置文件中启用),那么您将能够request在模板中访问。


推荐阅读