Django 上下文处理器不工作?
Django Context processors not working?
我制作了一个无法工作的 Django 上下文处理器...它还显示警告 messages.First 将向您显示警告消息:-
WARNINGS: ?: (1_8.W001) The standalone TEMPLATE_* settings were
deprecated in Django 1.8 and the TEMPLATES dictionary takes
precedence. You must put the values of the following settings into
your default TEMPLATES dict: TEMPLATE_CONTEXT_PROCESSORS.
现在,我已经用这种方式创建了 mym 自定义上下文处理器
在settings.py中:-
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"cms.utils.context_processors.permission_based_hidding_of_sidebar"
)
并在自定义上下文处理器 utills 中创建了我的函数:-
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_exempt
from cms.models.cmsUser import CmsUser
from cms.models.masterUsersPermissionTabMappings import MasterUsersPermissionTabMappings
@login_required
@csrf_exempt
def permission_based_hidding_of_sidebar(request):
cms_user = CmsUser.objects.get(userId=request.user.id)
print cms_user.id
universityPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=1)
cmsUserPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=2)
promotedPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=3)
appUserPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=4)
newsPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=5)
emailPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=6)
pushPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=7)
chatPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=8)
frontendPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=9)
print universityPermission
a='hello'
return render(request,'templates/admin_user_management/admin_user_add.html',{
'universityPermission':universityPermission,'cmsUserPermission':cmsUserPermission,
'promotedPermission':promotedPermission,'appUserPermission':appUserPermission,
'newsPermission':newsPermission,'emailPermission':emailPermission,'pushPermission':pushPermission,
'chatPermission':chatPermission,'frontendPermission':frontendPermission,'sayHello':a
})
我正在尝试在我的观点中使用它来查看它:-
return render(request,template-name,{},context_instance=RequestContext(request))
它向我显示错误 context_instance 未在 views.Is 中定义 我可以通过任何方式在视图中使用它。
您的 permission_based_hidding_of_sidebar
方法看起来像一个视图,而不是上下文处理器。模板上下文处理器应该 return 字典,而不是来自 render()
的 HTTP 响应。使用 login_required
或 csrf_exempt
装饰器没有意义。
在您看来,您不需要context_instance=RequestContext(request)
,render
快捷方式将自动使用请求来呈现模板。
最后,您可以通过更新设置 to use TEMPLATES
来修复 1_8.W001
警告。然后您应该更新 OPTIONS
中的 context_processors
,而不是设置 TEMPLATE_CONTEXT_PROCESSORS
.
我制作了一个无法工作的 Django 上下文处理器...它还显示警告 messages.First 将向您显示警告消息:-
WARNINGS: ?: (1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your default TEMPLATES dict: TEMPLATE_CONTEXT_PROCESSORS.
现在,我已经用这种方式创建了 mym 自定义上下文处理器
在settings.py中:-
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"cms.utils.context_processors.permission_based_hidding_of_sidebar"
)
并在自定义上下文处理器 utills 中创建了我的函数:-
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_exempt
from cms.models.cmsUser import CmsUser
from cms.models.masterUsersPermissionTabMappings import MasterUsersPermissionTabMappings
@login_required
@csrf_exempt
def permission_based_hidding_of_sidebar(request):
cms_user = CmsUser.objects.get(userId=request.user.id)
print cms_user.id
universityPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=1)
cmsUserPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=2)
promotedPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=3)
appUserPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=4)
newsPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=5)
emailPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=6)
pushPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=7)
chatPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=8)
frontendPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=9)
print universityPermission
a='hello'
return render(request,'templates/admin_user_management/admin_user_add.html',{
'universityPermission':universityPermission,'cmsUserPermission':cmsUserPermission,
'promotedPermission':promotedPermission,'appUserPermission':appUserPermission,
'newsPermission':newsPermission,'emailPermission':emailPermission,'pushPermission':pushPermission,
'chatPermission':chatPermission,'frontendPermission':frontendPermission,'sayHello':a
})
我正在尝试在我的观点中使用它来查看它:-
return render(request,template-name,{},context_instance=RequestContext(request))
它向我显示错误 context_instance 未在 views.Is 中定义 我可以通过任何方式在视图中使用它。
您的 permission_based_hidding_of_sidebar
方法看起来像一个视图,而不是上下文处理器。模板上下文处理器应该 return 字典,而不是来自 render()
的 HTTP 响应。使用 login_required
或 csrf_exempt
装饰器没有意义。
在您看来,您不需要context_instance=RequestContext(request)
,render
快捷方式将自动使用请求来呈现模板。
最后,您可以通过更新设置 to use TEMPLATES
来修复 1_8.W001
警告。然后您应该更新 OPTIONS
中的 context_processors
,而不是设置 TEMPLATE_CONTEXT_PROCESSORS
.