没有名为 '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.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 %}
我试图制作一个模板标签来获取登录用户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.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 %}