没有名为 'django.core.context_processors' django 模板的模块

No module named 'django.core.context_processors' django template

我试图制作一个模板标签来获取登录用户request.user,我试过这个

在settings.py

'context_processors': [
     'django.core.context_processors.request',
     'django.template.context_processors.debug',
     'django.template.context_processors.request',
     'django.contrib.auth.context_processors.auth',
     'django.contrib.messages.context_processors.messages',
            
     ],

这是我的模板标签

from django import template
register = template.Library()

@register.simple_tag
def is_member(context):
    request = context['request'].user
    if request.user in request.user.model_name.admins.all:
        return True
    else:
        return False

我必须确定登录用户是否是管理员 (M2M) 字段中的成员之一 但我得到这个错误

No module named 'django.core.context_processors'

当我尝试删除 settings.py 文件中的这一行 'django.core.context_processors.request' 时,我得到了这个错误

'is_member' did not receive value(s) for the argument(s): 'context'

已更新 - 模板

{% load my_tags %}

{% if is_member %}
  <a class="nav-link" href="{% url 'listings:new_post' %}">
     <i class="fas fa-user-plus"></i>create new post </a>
{% else %}
   <a class="nav-link" href="{% url 'login'%}
      <i class="fas fa-user-plus"></i>Login</a>                
{% endif %}

任何建议我都会感激 谢谢,艺术

Django documentation 说:

django.core.context_processors

内置模板上下文处理器已移至 django.template.context_processors

现在您的模板选项应该如下所示:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
                        os.path.join(BASE_DIR, 'templates'),
                ],
        'APP_DIRS': True,
        'OPTIONS': {
            'debug': DEBUG,
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

还要在 simple tags 中使用 context 添加 takes_context=True

@register.simple_tag(takes_context=True, format_string)
def is_member(context):
    ....

在您的模板中:

{% is_member as user_is_member %}

{% if user_is_member %}
    ...
{% else %}
    ...
{% endif %}