gpt4 book ai didi

python - Django 上下文处理器不在模板中显示新的上下文值

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:20 25 4
gpt4 key购买 nike

编辑:现在已更新,我已将问题缩小到上下文处理器变量对我使用自定义标签加载的模板不可用。

我正在使用 Django 1.11,这是我第一次尝试使用自定义上下文处理器。

问题是我应该从上下文处理器添加的上下文变量不会从自定义标记加载的模板中返回任何内容。我没有收到任何错误。

所以下面的 {{ testcontext }} 应该返回“IT WORKED!”并在我的 base.html 模板中执行此操作,但在使用 @register.inclusion_tag() 加载的模板中不返回任何内容。

设置.py:

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

context_processors.py:

def test_context(request):
return {'testcontext': 'TEST WORKED!'}

标签.py

from django import template

from appname.models import Category

register = template.Library()

@register.inclusion_tag('template.html')
def load_category(selected_slug=None):
return {
'categories': Category.objects.all(),
'selected':selected_slug,
}

views.py:

from django.views.generic import ListView
from appname.models import MyModel

class MyView(ListView):
model = MyModel

网址.py

from django.conf.urls import url

from appname.views import MyView

urlpatterns = [
url(r'^$', MyView.as_view(), name="home"),
]

模板.html

{{ testcontext }}

最佳答案

所以问题出在我的自定义标记在加载 template.html 时没有携带上下文。所以下面的代码修复了它,上下文处理器中的我的变量现在按预期工作。

标签.py

from django import template

from appname.models import Category

register = template.Library()

@register.inclusion_tag('template.html', takes_context=True)
def load_category(context,selected_slug=None):
return {
'categories': Category.objects.all(),
'selected': selected_slug,
'testcontext': context['testcontext']
}

关于python - Django 上下文处理器不在模板中显示新的上下文值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47920758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com