簡體   English   中英

沒有名為“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)字段中的成員之一,但我收到此錯誤

沒有名為“django.core.context_processors”的模塊

當我嘗試在 settings.py 文件中刪除這一行'django.core.context_processors.request'時,我收到了這個錯誤

“is_member”沒有收到參數的值:“上下文”

更新 - 模板

 {% 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 文檔說:

 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',
            ],
        },
    },
]

還要在簡單標簽中使用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 %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM